2012-02-13 142 views
6

我正在使用jQuery多選部件。我想取消全部選中,如果他們都手動檢查。我有一個示例代碼 JSFiddle--> Code如何取消選擇多選部件中的所有選項

這是行不通的。當手動選擇選擇選項時,請在第一次選擇它時給我1(在最後一個選項點擊時)選中未選中的選項。所以我檢查了$this.children("option").not('[selected]').length是1還是ui.checked,並且調用uncheckAll ,但是在此之後,如果$this.children("option").not('[selected]').length在選擇最後一個的時候$this.children("option").not('[selected]').length給我0,那麼它的行爲正確的代碼是 。

我想知道發生了什麼事。

+1

我不知道你問什麼,檢查/取消所有在搗鼓我的正常工作? – 2012-02-13 16:05:33

+0

嘗試手動選擇它們全部。應該觸發multiselectclick事件。如果所有的選項都被選中,那麼它應該取消選中哪個沒有發生 – coool 2012-02-13 16:24:51

+0

它對我有用,如果我手動檢查它們 – Vigrond 2012-02-13 16:57:29

回答

12

舒服,所以這裏是你想要的解決方案......檢查documentation,有方法getChecked得到selected options。你的工作不正常,因爲插件會重新格式化選擇元素。

$('.multi').multiselect({ 
    click: function(e, ui){ 
    if($(this).multiselect("getChecked").length 
           == $('select.multi > option').length){ 
     $(this).multiselect("uncheckAll");  
    }   
    } 
}); 

小提琴例如:http://jsfiddle.net/fG6PT/11/

9
$("#multiselectelement").multiselect("uncheckAll"); 
相關問題