首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery获取最近的隐藏div

jquery获取最近的隐藏div
EN

Stack Overflow用户
提问于 2013-06-17 16:04:38
回答 3查看 3.2K关注 0票数 1

当选择任何复选框时,我正在尝试选择id =B的div

代码语言:javascript
运行
复制
<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;

代码语言:javascript
运行
复制
$(this).closest("div:hidden").attr("id")

有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-17 16:07:12

这是因为.closest遍历dom树,您想要的是获取ul元素,然后获取div:hidden sibling

代码语言:javascript
运行
复制
$(this).closest("ul").siblings("div:hidden").attr("id");

这是基于this引用ul元素的子元素、孙子元素、曾孙元素、N子元素。

正如T.J.Crowder所指出的那样,只有当div是ul的同级而不是同级的子节点时,这才能起作用:以下代码片段查找同级的子节点:

代码语言:javascript
运行
复制
$(this).closest("ul").siblings().find("div:hidden").attr("id");
票数 6
EN

Stack Overflow用户

发布于 2013-06-17 16:21:38

你可以使用

代码语言:javascript
运行
复制
$('ul').change(function(){
   $('#B').show();
});

我更喜欢将id放在UL标签上,并引用该ID

代码语言:javascript
运行
复制
<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();
});
票数 0
EN

Stack Overflow用户

发布于 2013-06-17 16:35:23

您需要做的是向上转到ul,返回到前一个div,然后向下转到它的隐藏子进程。所以:

代码语言:javascript
运行
复制
var id = $(this).closest('ul').prev().children('div:hidden').attr(id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17142914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档