jquery得到最近的隐藏div

时间:2013-06-17 08:04:38

标签: javascript jquery

我在选择任何复选框

时尝试选择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")

任何帮助?

3 个答案:

答案 0 :(得分:6)

这是因为.closest沿着dom树行进你想要的东西;是获取ul元素,然后获取div:hidden sibling

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

这是基于this指的是孩子,孙子,曾孙子,ul元素的N子。


作为T.J. Crowder指出,只有当div是兄弟的兄弟而不是兄弟的子节点时,这才会起作用:这个片段寻找兄弟姐妹的子节点:

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

答案 1 :(得分: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();
});

答案 2 :(得分:0)

您需要做的是转到ul,回到之前的div,然后转到隐藏的孩子。所以:

var id = $(this).closest('ul').prev().children('div:hidden').attr(id);