1

Whilefirstli.hasClass('selected')は機能し、正しい要素を取得します。removeClass 関数はクラスに削除されないようです。要素がチェックされていない場合、最初の要素もチェックを外したいと思いliます。

これがjfiddleです(コードは下部にあります)

注:他のオプションのいずれかのチェックを外すと、「すべて選択」がチェックされなくなります。

var firstli = $('.dropdown-menu.inner li').first();
firstli.click(function(event) {   
    if (!firstli.hasClass('selected')) {    
        $('.selectpicker').selectpicker('selectAll');       
    }
    else {
        $('.selectpicker').selectpicker('deselectAll');
    }
    return false;
});

var alllis = $('.dropdown-menu.inner li:not(:first-child)');

alllis.click(function(event) {
    if ($(this).hasClass('selected')) {    
        alert(firstli.hasClass('selected')); //true
        firstli.removeClass('selected');
    }
});
4

1 に答える 1

2

問題はsetSelected()、[すべて選択] オプションを再チェックすることです。これを修正するために、その関数を次のように変更しました。

setSelected: function (c, d) {
    if (d) {
        this.$menu.find("li").eq(c).addClass("selected")
    } else {
        this.$menu.find("li").eq(c).removeClass("selected")
        this.$menu.find("li:first-child").removeClass("selected")
    }
}

基本的に、クラスを削除する必要がある場合、selectedすべてがチェックされているわけではないことがわかります。これは機能します。

http://jsfiddle.net/eC8hF/30/

于 2013-07-30T15:17:04.913 に答える