0

jQuery オブジェクトを呼び出すと.hide()、オブジェクトは のスタイルを取得しますdisplay: none。このオブジェクトが によって隠されているかどうかを確認しようとするとobject.is(':hidden')true が返されますが、同じ jQuery メソッドを使用して最初の子を確認しようとすると、false を返すものと true を返すものがあります。

サンプル:

<div id="parentContainer">
    <div id="childContainer"></div>
    <p id="childContainer"></p>
</div>
$('#parentContainer').hide();

$("div[id='childContainer']").is(':hidden') // returns false
$("p[id='childContainer']").is(':hidden')   // returns true

なぜこのような振る舞いになるのか、誰にも分かりますか?

4

1 に答える 1

1

これはおそらく、ページに2つの同じIDがあることに関係する問題です。

重複している場合はhtmlのIDが一意である必要があり、クラスを使用する必要があります。そうでない場合、コードはw3c検証などに合格しません。

また、あなたの投稿に$( "div [id ='childContainer']")。is(':hidden')-> falseを返しますが、jsfiddleで試してみるとtrueになります。

http://jsfiddle.net/kep7d/1/

于 2012-08-03T16:27:35.773 に答える