jQuery - 从任何不仅被点击的<li>中删除类

Joo*_*nas 2 javascript jquery html-lists removeclass toggleclass

可以说我有这样的清单......

<ul>
  <li class="one">One</li>
  <li class="two">Two</li>
  <li class="three">Three</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

......我希望能够在李的家里切换班级......

$( "li" ).click(function() {
    $( "li" ).toggleClass( "active" );
});
Run Code Online (Sandbox Code Playgroud)

..所以我想要li除了被点击的那个从未显示为'.active',同时仍然保持'.active'li中的toggleClass能力

所以我想也许我想从任何其他li中删除Class,除了点击的那个.我不知道我怎么能做到这一点......

关于如何实现这样的事情的任何想法?我相信它很容易,但我不知道因为我对jQuery很新

解决了 - 如果有人想看到它......我们去: http ://jsfiddle.net/6jm2s/17/ 也是这个... http://jsfiddle.net/6jm2s/18/

两个答案都很完美.. @jondavidjohn和@hunter谢谢你们......太糟糕了我不能把Checkmark放在两个答案上......但我会让猎人拥有它,因为他的代码更短...... :)

hun*_*ter 11

这样做,一旦某些东西活跃,一个人将永远活跃:

$("li:not(.active)").live("click", function() {
    $(this).addClass("active");
    $(this).siblings().removeClass("active");
});
Run Code Online (Sandbox Code Playgroud)

仅关注li尚未激活的.


能够停用:

$("li").click(function() {
    $(this).toggleClass("active");
    $(this).siblings().removeClass("active");
});
Run Code Online (Sandbox Code Playgroud)

工作实例:http://jsfiddle.net/6jm2s/18/


jon*_*ohn 5

$( "li" ).click( function() {
    if( $(this).is('.active') ) {
        $(this).removeClass( "active" );
    }
    else {
        $( "li.active" ).removeClass( "active" );
        $(this).addClass( "active" );
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 也许更好:`$("li.active").removeClass("active");` (2认同)