2017-01-26 12 views
1

私がやろうとしていること。私は新しいタブで開くフォームを持っています。私が思い付くものをそうjQueryオブジェクトのトップレベルで見つかる

<div id="cloneForm"> 
    <form id="searchForm" method="post" target="_blank" action="#"> 
    </form> 
</div> 

:私はいくつかの余分なものをそのフォームを送信します:サンプルフォーム a)の削除「ターゲット= _blank」 B)ここで、将来

のために無傷でそのフォームを保存しています: そのままの形を維持するために、私は変数にjQueryを使ってフォームをクローニングしています:find('[target="_blank"]')は、もはや作品$(「#のcloneForm」)に取り組んできました

var searchForm = $('#searchForm').clone(); 
var cloneForm = $('#cloneForm').clone(); // This is just for workaround 

しかし、セレクタを。 (なぜだろう?)。このセレクタは "cloneForm"でのみ動作します。

  • 私は、このような方法で、ターゲット属性にアクセスすることができます:

    だから私は2つのことを行うことができますsearchForm[0].targetセットを何か

  • cloneForm.find('[target="_blank"]').removeAttr('target')

しかし、私が好きなこの二つのどちらに。私は余分なdiv cloneFormを追加するのは好きではない。アレイ経由でターゲットにアクセスするのが好きではありません。

もっと良い方法であればどんな提案ですか?

答えて

0

フォームは、セット内のトップレベルオブジェクトであり、セット内の最上位レベルのオブジェクトです。ちょうどそれにattrを使用します。

cloneForm.attr("target", "new value"); 
// or 
cloneForm.removeAttr("target"); 

それはセットで唯一のオブジェクトでなかった場合、あなたはそれでちょうどそのオブジェクトに新しいセットを取得するためにfilterを使用したい:

cloneForm.filter('[target="_blank"]').attr("target", "new value"); 
// or 
cloneForm.filter('[target="_blank"]').removeAttr("target"); 

を。しかし、トップレベルの要素が1つしかないことを知っているので、必要はありません。

関連する問題