2

私は、liをクリックするとliが展開するjquery関数を持っています。その部分はうまく機能しています。ここで、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>このようなことを行う方がわずかに効率的であり、同じページ上の複数のリストが互いに独立して機能できるようになります(これも目的の機能であると仮定します)。

$('li').click(function() {
  $('this').addClass('highlight').siblings().removeClass('highlight').
});
于 2012-07-03T18:38:13.337 に答える
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 に答える