当选择任何复选框时,我正在尝试选择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")有什么帮助吗?
发布于 2013-06-17 16:07:12
这是因为.closest遍历dom树,您想要的是获取ul元素,然后获取div:hidden sibling。
$(this).closest("ul").siblings("div:hidden").attr("id");这是基于this引用ul元素的子元素、孙子元素、曾孙元素、N子元素。
正如T.J.Crowder所指出的那样,只有当div是ul的同级而不是同级的子节点时,这才能起作用:以下代码片段查找同级的子节点:
$(this).closest("ul").siblings().find("div:hidden").attr("id");发布于 2013-06-17 16:21:38
你可以使用
$('ul').change(function(){
$('#B').show();
});我更喜欢将id放在UL标签上,并引用该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-17 16:35:23
您需要做的是向上转到ul,返回到前一个div,然后向下转到它的隐藏子进程。所以:
var id = $(this).closest('ul').prev().children('div:hidden').attr(id);https://stackoverflow.com/questions/17142914
复制相似问题