2

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

<ul>
  <li class="one">One</li>
  <li class="two">Two</li>
  <li class="three">Three</li>
</ul>

...而且我希望能够在 li 的课程中​​切换...

$( "li" ).click(function() {
    $( "li" ).toggleClass( "active" );
});

..我也希望 li 除了被点击的那个永远不会显示为 '.active' 同时仍然保持在 '.active' li 中的 toggleClass 能力

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

关于如何实现类似目标的任何想法?我确定它相当容易,但我不知道,因为我对 jQuery 很陌生

已解决-如果有人想看..我们去: http: //jsfiddle.net/6jm2s/17/ 还有这个... http://jsfiddle.net/6jm2s/18/

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

4

2 回答 2

11

使它成为一旦某事是活跃的,一个总是活跃的:

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

仅关注li尚未激活的 '。


为了能够停用:

$("li").click(function() {
    $(this).toggleClass("active");
    $(this).siblings().removeClass("active");
});

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

于 2011-02-04T18:32:33.857 回答
5
$( "li" ).click( function() {
    if( $(this).is('.active') ) {
        $(this).removeClass( "active" );
    }
    else {
        $( "li.active" ).removeClass( "active" );
        $(this).addClass( "active" );
    }
});
于 2011-02-04T18:29:24.023 回答