1

虽然firstli.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 回答