jquery得到最近的隐藏div

Com*_*Run 0 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>
Run Code Online (Sandbox Code Playgroud)

以下返回undefined;

$(this).closest("div:hidden").attr("id")
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

and*_*lrc 6

这是因为.closest沿着dom树行进你想要的东西; 是得到ul元素然后得到div:hidden 兄弟:

$(this).closest("ul").siblings("div:hidden").attr("id");
Run Code Online (Sandbox Code Playgroud)

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


正如TJ Crowder指出的那样,只有当div是兄弟的兄弟而不是兄弟的子节点时,这才会起作用:这个片段寻找兄弟姐妹的子节点:

$(this).closest("ul").siblings().find("div:hidden").attr("id");
Run Code Online (Sandbox Code Playgroud)

  • 关闭,但不完全,它不是'ul`的兄弟姐妹.你需要`$(this).closest("ul").siblings().children("div:hidden").attr("id");`这听起来不是一个好主意,结构可能需要改变. (2认同)