1

フォーム 1 とフォーム 2 の 2 つのフォームがあります。両方のフォームが同じドキュメントまたはページにあります。これらのフォームは、チェックボックスによって区別されます。フォーム 1 にはチェックボックス入力要素があり、フォーム 2 にはチェックボックス要素がありません。

現在、次のコードでチェックボックス入力要素の存在をテストしようとしています:

if(jQuery(this).closest("form").find(':checkbox')){...}

フォーム2の送信をクリックすると、チェックボックスが見つかりました。

今のところ、 .closest は見つかった最も近いフォーム要素にコンテキストを設定することを理解しています。また、チェックボックスのないフォーム 2 をトリガーしている場合、フォーム 1 のチェックボックスを見つけるのはなぜですか?

明らかに、私はこれがどのように機能するかを誤解しています。誰か説明してくれませんか?

4

1 に答える 1

1
if(jQuery(this).closest("form").find(':checkbox')){...}

あなたの問題の理由は、すべての jQuery の選択が真実であることだと思います。空の jQuery 選択でも条件に合格しifます。

if (jQuery(false)) {
    alert('this test passes');
}

プロパティをチェックして、length要素が見つかったかどうかを確認する必要があります。

if(jQuery(this).closest("form").find(':checkbox').length){...}

要素が見つからない場合、は false-y 値にlengthなる0ため、条件は失敗します。いずれかの要素が見つかった場合、lengthは より大きい0ため、条件はパスします。

于 2011-11-09T23:54:12.957 に答える