【问题标题】:swap classes on click点击交换类
【发布时间】:2011-08-07 08:21:17
【问题描述】:

我有一个全局 div 中的 6 个项目的列表(导航) 现在我可以在点击时添加一个类,但现在它们加起来了,这意味着一旦我的六个项目被点击,它们都会以 currentagence 类结束。

我希望能够删除将类添加到单击的项目但将其删除到另一个,我该如何实现?这是我现在使用的 jquery 代码。

$("#navigationagence ul li").click(function () { $(this).toggleClass("currentagence"); });

【问题讨论】:

    标签: jquery class list swap


    【解决方案1】:

    您也可以使用:

    $("#navigationagence ul li").click(function() {
        $(".currentagence").removeClass("currentagence");
        $(this).addClass("currentagence");
    });
    

    【讨论】:

    • 谢谢!不得不使用 Naveed 解决方案,因为我忘了提到我有两个 ul 列表。在这种情况下,单独的 div 和兄弟姐妹都不起作用。
    【解决方案2】:

    您可以使用siblings() 方法获取其他列表项并从中删除类:

    $("#navigationagence ul li").click(function() {
        $(this).addClass("currentagence").siblings().removeClass("currentagence");
    });
    

    【讨论】:

    • 代理在这里会更好
    • @redsquare,现在我很感兴趣,你能举个例子吗? :)
    • 很好地使用 .delegate 将一个处理程序添加到 dom 而不是 x (在 OP 的案例 6 中)。 $('#navigationagence').delegate('li', 'click' fn);
    • @redsquare,明白了,但它只会使用单个元素而不是六个元素注册处理程序。它仍然不能与toggleClass() 一起使用,不是吗?
    • 是的 - 它使用事件委托给容器 - #navigationagence 内的任何 li 点击都会被冒泡到这个处理程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多