使用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
参数是b5rked还是我应该使用change
事件?
答案 0 :(得分:6)
对我有用的快速修复方法是保留状态标志并在事件处理程序中引用它...
$(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;
});
答案 1 :(得分:2)
addItem(value, silent)
中的静默参数仅影响change
事件是否存在。您无法使用item_add
来避免silent = true
事件。
答案 2 :(得分:1)
唯一对我有用的是在本地存储item_add
事件,将其从选择实例中删除,并在添加项目后将其设置回来:
onItemAdd: function(val) {
var e = this._events['item_add'];
delete this._events['item_add'];
this.addItem(123);
this._events['item_add'] = e;
}