3
我使用Kendo UI中的多選。 我想知道是否有任何方法來觸發一個函數,當用戶從多選中刪除一個項目。 到目前爲止,我知道'change'事件被觸發了,但它太泛化了,我找不到任何有關用戶刪除的信息。或者在那裏?Kendo multiselect,當物品被移除時觸發事件
我使用Kendo UI中的多選。 我想知道是否有任何方法來觸發一個函數,當用戶從多選中刪除一個項目。 到目前爲止,我知道'change'事件被觸發了,但它太泛化了,我找不到任何有關用戶刪除的信息。或者在那裏?Kendo multiselect,當物品被移除時觸發事件
什麼定義change
爲:
change : function (e) {
var previous = this._savedOld;
var current = this.value();
var diff = [];
if (previous) {
diff = $(previous).not(current).get();
}
this._savedOld = current.slice(0);
// diff has the elements removed do whatever you want...
}
我要做的就是節省_savedOld
以前的值,然後計算與當前使用jQuery.not的差異。重要的是要注意使用slice
來克隆先前的值列表,如果我們保存current
,那麼我們實際上保存了對當前列表的引用,並且因爲它是下次我們嘗試使用時的參考,我們再次獲取當前值。
編輯:爲了節省初始化時設定的值,你可以這樣做:
dataBound : function (e) {
saveCurrent(this);
},
change : function (e) {
var previous = this._savedOld;
var current = this.value();
var diff = $(previous).not(current).get();
saveCurrent(this);
// diff has the elements removed do whatever you want...
}
其中saveCurrent
是定義爲一個函數:
function saveCurrent(multi) {
multi._savedOld = multi.value().slice(0);
}
作品,但並非總是如此。有時我初始化多選,並用.values()設置一些值。 那麼,如果我刪除其中的一個,它會觸發「更改」,但之前是未定義的。 – AntouanK
'multiselect.trigger('change');' 似乎是在手動設置值之後執行的技巧...... – AntouanK
另外,在'dataBound'中保存'values'以覆蓋初始化情況。看我的**編輯**。 – OnaBai