背景: 投稿する特定のデータを追加する必要があります。ajaxSetup
ネイティブフォームの送信に必要であることを除いて、非同期リクエストに対してjQueryが行うことと同様です。
フォームを送信する前に、いくつかのフォーム フィールドをフォームに追加できるようにする必要がありますが、それらが既に存在する場合に備えて、重複するフィールドを追加しないようにしたいと考えています (つまり、検証などのために元の送信が失敗しました)。 )。
最初は、次のようなものが素晴らしく、首尾一貫していると思いました。
$("form").live("submit", function ()
{
var $this = $(this);
($this.find('#stuff') ||
$this.append('<input type="hidden" id="stuff" name="stuff" />'))
.val('some value');
// carry on with the native submit
// this is actually correct, as opposed to $this.submit()
// which would create a loop
this.submit();
});
つまり、を探し、#stuff
見つからない場合は作成し、その値を "some value" に設定します。ただし、 の結果.find()
は実際には jQuery ラッパーであるため、true
一致する要素が見つからなくても.append()
コードが実行されないという意味に暗黙的に変換されます。
この「要素を探して、まだ存在しない場合は作成する」シナリオ全体に取り組む良い方法はありますか?