1

チェックボックスを選択するときに id = B の div を選択しようとしています

<div id="a"><div style="display:none;" id="B"></div></div>
<ul>
<li><input type='checkbox'></li>
<li><input type='checkbox'></li>
<li><input type='checkbox'></li>
</ul>

以下は undefined を返します。

$(this).closest("div:hidden").attr("id")

何か助けはありますか?

4

3 に答える 3

6

それは、.closestが必要な dom ツリーを上って移動するためです。ul要素を取得してからdiv:hidden 兄弟を取得することです:

$(this).closest("ul").siblings("div:hidden").attr("id");

thisこれは、ul 要素の子、孫、ひ孫、N 子を指すことに基づいています。


TJ Crowder が指摘しているように、これは div が ul の兄弟であり、兄弟の子ノードではない場合にのみ機能します。このスニペットは、兄弟の子ノードを探します。

$(this).closest("ul").siblings().find("div:hidden").attr("id");
于 2013-06-17T08:07:11.857 に答える
0

あなたが使用することができます

$('ul').change(function(){
   $('#B').show();
});

ULタグにIDを付けて、そのIDを参照することをお勧めします

<div id="a">
    <div style="display:none;" id="B"></div>
</div>
<ul id="theUl">
    <li><input type='checkbox' /></li>
    <li><input type='checkbox' /></li>
    <li><input type='checkbox' /></li>
</ul>


 $('#theUl').change(function(){
       $('#B').show();
});
于 2013-06-17T08:21:37.653 に答える
0

あなたがする必要があるのは、上に移動ulし、前の に戻りdiv、次にその非表示の子に戻ることです。そう:

var id = $(this).closest('ul').prev().children('div:hidden').attr(id);
于 2013-06-17T08:35:22.720 に答える