2

我有一个 jquery 函数,当单击 li 时,li 会展开。那部分工作正常。现在,我想要,当单击 li 时,它会切换背景颜色。但是它可以工作,但是当我必须再次单击 li 项目以取消切换背景颜色时。有人可以在正确的方向上帮助我如何实现这一目标。

$(function() {
    $('.a').click(function() {
        var name = $(this).attr("name");
        var content = $('.content[name=' + name + ']');
        $('.content').not(content).hide('fast');
        $('.selected').css('background', 'yellow');
        content.slideToggle('fast');
    });

    $("li").click(function() {
        $(this).toggleClass("highlight");
    });
});​
4

2 回答 2

2

每次单击时,将<li>-s 设置为默认颜色并突出显示当前颜色:

$("li").click(function() {
    $("li").removeClass("highlight");
    $(this).addClass("highlight");
});

...

更新

http://jsfiddle.net/NXVhE/4/

$(function() {
    $('.a').click(function() {  
        $(this).removeClass("highlight");    
        var name = $(this).attr("name");
        var content = $('.content[name=' + name + ']');

        $('.content').not(content).hide();
        content.toggle();
    });

    $("a").click(function () {
        $("a").removeClass("highlight");

        if ( $(".content").is(":visible") ) {
            $(this).addClass("highlight");
        }
    });  
});
于 2012-07-03T18:28:21.350 回答
2

假设<li>s 都是兄弟姐妹,这样做会稍微高效一些,并且允许同一页面上的多个列表彼此独立运行(再次假设这是所需的功能)

$('li').click(function() {
  $('this').addClass('highlight').siblings().removeClass('highlight').
});
于 2012-07-03T18:38:13.337 回答