2012-07-26 68 views
17

如何確定組件上觸發的更改事件是選擇還是取消選擇的結果? 我們只能如何獲取選定值的值或僅取消選定值?.chosen.change() - 如何確定它是選擇還是取消選擇

$("#airports-select-2").chosen().change(function(event) { 
    console.log('select2 change', event, $(event.target).val()); 
}); 

此代碼給出了迄今爲止在多選組件上選擇的所有值?這怎麼能改變,只給我新的選擇或取消選定的組件的價值?

+1

如果選擇的插件不能給你在回調的信息,你可能不得不每次都保存選定項的列表數組,然後比較和更新數組中的'變化'回調被稱爲 – MrOBrian 2012-07-26 21:10:57

回答

3

在每一個事件火可以觸發:

var target = $(event.target), 
    priorDataSet = target.data("chosen-values"), 
    currentDataSet = target.val(); 

//Diff and compare the delta here.  

target.data("chosen-values", currentDataSet); 

之前,你可以diff來確定增量是什麼值集之間的DOM元素中數據的更新。如果它在舊的而不是在新的它被刪除。如果它是新的而不是舊的,那麼它已被添加。

如果您需要一個如何確定兩個陣列之間的增量的示例,請告訴我,我也會爲此做一個示例。

36

選自documentation

選上的觸發每當做出選擇 標準DOM事件(也發送選擇取消參數,告訴你哪些 選擇是改變)。

$('select').on('change', function(event, params) { 
    // can now use params.selected and params.deselected 
    }); 
+0

你碰巧知道如何取消更改事件嗎?假設用戶選擇和選項和更改事件被觸發,但基於某些條件我想恢復此選擇。 – Shaunak 2013-09-04 21:20:27

+0

您可以將