0

最初のフォームの最初の入力のみに応じて要素の存在を検索する必要があるページがあります

<input type="text" /><!-- first input -->
<button></button>
<div>
    <form><input value="3" /></form> <!-- first form -->
    <form><input value="3" /></form>
</div>

とスクリプト

$("button").click(function()
{
    if( $(this).next().children("form").first().has("input[value='" + $(this).prev().val() + "']") )
        alert("Present");
    else
        alert("Absent");
});

しかし、それは機能していません

4

2 に答える 2

1

クエリが返すコレクションの長さを確認することで、要素の存在を確認できます。

たとえば、フォームがあるかどうかを確認する場合:

var forms = $('form').length //0 if none, at least 1 if any
于 2012-05-17T12:17:31.980 に答える
0

問題は、.has()メソッドがブール値を返さず、jQueryオブジェクトを返すことです。具体的には、「一致する要素のサブセットから新しいjQueryオブジェクトを構築します」。そのオブジェクトの長さをチェックして、一致する要素があるかどうかを確認する必要があります。

if($(this).next().children("form").first()
           .has("input[value='"+$(this).prev().val()+"']").length != 0)

デモ: http: //jsfiddle.net/mmQHB/

于 2012-05-17T12:30:50.103 に答える