jQuery 父级()
jQuery snippet:
$(".sliders dt a").click(function(){
$(this).parent().parent().parent().find(".triggers a").removeClass("active");
$(this).toggleClass("active");
$(this).parent().next("dd").slideToggle("fast");
return false
});
HTML:
<div class="sliders">
<div class="triggers">
<a href="#" class="active">Hide all</a>
</div>
<dl>
<dt>
<a href="#">text</a>
</dt>
<dd>text</dd>
</dl>
</div>
使用三个 .parent()
来捕获 .triggers
块。 有什么方法可以合并它们吗?
jQuery 1.2.6。使用了版本,这就是 .closest()
解决方案不起作用的原因。
jQuery snippet:
$(".sliders dt a").click(function(){
$(this).parent().parent().parent().find(".triggers a").removeClass("active");
$(this).toggleClass("active");
$(this).parent().next("dd").slideToggle("fast");
return false
});
HTML:
<div class="sliders">
<div class="triggers">
<a href="#" class="active">Hide all</a>
</div>
<dl>
<dt>
<a href="#">text</a>
</dt>
<dd>text</dd>
</dl>
</div>
Three .parent()
is used, to catch .triggers
block. Is there any way to merge them?
jQuery 1.2.6. version is used, thats why .closest()
solutions don't work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这样使用
.closest()
:您可以像 然后返回到
.sliders
div 找到下面的.triggers a
。You can use
.closest()
like this:This goes up to the
.sliders
div then back down to find the.triggers a
beneath.父母()如何工作?它沿着 DOM 树向上走并收集所有父级。然后它通过指定的选择器过滤它们。
使用 jQuery 1.4+ 更佳的方法是使用 .closest()。如果页面上有很多节点,它会运行得更快。只是一个想法。
$(this).closest('.sliders').siblings('.triggers').find('a').removeClass(...);
How does parents() work? It walks up the DOM tree and collects all parents. Than it filters them by the selector specified.
Using jQuery 1.4+ more optimal is to use .closest(). It will work much faster if you have a lot of nodes on your page. Just a thought.
$(this).closest('.sliders').siblings('.triggers').find('a').removeClass(...);
由于
.sliders
和.triggers
是兄弟姐妹,因此您需要使用.closest()
来获取.sliders
,然后遍历到.triggers
,并获取其内部a
元素。编辑:
问题发生了变化,所以现在答案也发生了变化:
Since
.sliders
and.triggers
are siblings, you need to use.closest()
to get.sliders
, then traverse over to.triggers
, and get its innera
element.EDIT:
Question changed, so now answer has changed: