Selectize.js:静默添加项目时触发的onItemAdd事件

时间:2015-03-12 14:01:42

标签: javascript jquery selectize.js

使用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事件?

3 个答案:

答案 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;
}