2013-07-30 188 views
1

雖然firstli.hasClass('selected')確實工作並檢索正確的元素。 removeClass函數似乎不會移除到類中。當一個元素沒有被選中時,我想第一個li也被取消選中。jquery removeClass似乎不工作

這裏是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'); 
    } 
}); 
+1

我已經看過了的jsfiddle,它似乎在我的機器(Firefox)的工作你用什麼瀏覽器? –

+1

是的,它也在我的Chrome上工作 – exexzian

+3

它不適合我使用Chrome。當您取消選中其中一個選項時,他希望「全選」變爲未選中狀態。 –

回答

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/

+1

作爲第一個得到該問題的第一個人正確,然後解決它 – exexzian