jQuery 父级()

发布于 2024-09-01 08:32:27 字数 839 浏览 1 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱本泡沫多脆弱 2024-09-08 08:32:27

这样使用 .closest()

$(".sliders dt a").click(function(){
    $(this).closest(".sliders").find(".triggers a").removeClass("active");
    return false
}); 

您可以像 然后返回到 .sliders div 找到下面的 .triggers a

You can use .closest() like this:

$(".sliders dt a").click(function(){
    $(this).closest(".sliders").find(".triggers a").removeClass("active");
    return false
}); 

This goes up to the .sliders div then back down to find the .triggers a beneath.

请止步禁区 2024-09-08 08:32:27

父母()如何工作?它沿着 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(...);

肤浅与狂妄 2024-09-08 08:32:27

由于 .sliders.triggers 是兄弟姐妹,因此您需要使用 .closest() 来获取 .sliders,然后遍历到.triggers,并获取其内部a元素。

$(".sliders dt a").click(function(){
    $(this).closest('.sliders').prev('.triggers').find("a.active").removeClass("active");
    return false;
});

编辑:

问题发生了变化,所以现在答案也发生了变化:

$(".sliders dt a").click(function(){
    $(this).closest('.sliders').find(".triggers a.active").removeClass("active");
    return false;
});

Since .sliders and .triggers are siblings, you need to use .closest() to get .sliders, then traverse over to .triggers, and get its inner a element.

$(".sliders dt a").click(function(){
    $(this).closest('.sliders').prev('.triggers').find("a.active").removeClass("active");
    return false;
});

EDIT:

Question changed, so now answer has changed:

$(".sliders dt a").click(function(){
    $(this).closest('.sliders').find(".triggers a.active").removeClass("active");
    return false;
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文