使用Selectize.js,我正在尝试初始化动态预先选择列表中的一个项而不触发onItemAdd
事件。在以下代码中,即使silent
参数是真实的,也会触发事件:
$(function () {
$('select').selectize({
onItemAdd: function () {
alert("Add item");
}
});
// this triggers an the event
$('select')[0].selectize.addItem('2', true);
});
的jsfiddle:http://jsfiddle.net/zuzat0dc/1/
根据文件:
addItem(value, silent)
:“选择”一个项目。将其添加到当前插入符号位置的列表中。如果“沉默”是真实的,则不会对原始输入触发更改事件。知道如何避免触发onItemAdd
事件吗? silent
参数是b0rked还是我应该使用change
事件?
一个对我有用的快速修复是保持状态标志并在事件处理程序中引用它...
$(function () {
var initialising = true;
$('select').selectize({
onItemAdd: function () {
if(!initialising) {
alert("Add item");
}
}
});
// this triggers an the event
$('select')[0].selectize.addItem('2', true);
initialising = false;
});
addItem(value, silent)
中的无声参数仅影响change
事件的事实。你无法用item_add
避免silent = true
事件。
对我来说唯一有用的是在本地存储item_add
事件,将其从选择实例中删除并在添加项目后将其设置为:
onItemAdd: function(val) {
var e = this._events['item_add'];
delete this._events['item_add'];
this.addItem(123);
this._events['item_add'] = e;
}