我在选择任何复选框
时尝试选择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")
任何帮助?
答案 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);