Selectize.js委托事件在选项上不起作用

尼古拉斯·恩格勒

我目前正在尝试在下拉菜单中监听生成的选项上的点击事件,但目前无法实现。

由于加载DOM时不会生成选项,因此我将事件委派给了文档,以监听下拉菜单中的选项是否被点击。我的代码当前如下所示:

var $accountsSelectize = $('#accounts-input').selectize({
  ...
});

$(document).on('click', '.accounts-input-selectize .option', function(event) {
  alert('An option was clicked!');
});

但这似乎不起作用。知道为什么会这样吗?关于此事件为何根本不触发的任何线索都将受到欢迎。

编辑:仅供参考,我向HTML输入元素添加了一个类,这就是为什么我要监听点击的原因.accounts-input-selectize .option

<input type="text" id="accounts-input" class="accounts-input-selectize" placeholder="Search accounts">
尼古拉斯·恩格勒

我认为是半生不熟的“解决方案”的方法是创建一个插件,该插件可拦截默认的事件侦听器,以实现对选项的点击:

Selectize.define('click2deselect', function(options) {
  var self = this;
  var setup = self.setup;
  this.setup = function() {
    setup.apply(self, arguments);

    // Intercept default handlers
    self.$dropdown.off('mousedown click', '[data-selectable]').on('mousedown click', '[data-selectable]', function(e) {
      var value = $(this).attr('data-value'),
          inputValue = self.$input.attr('value');

      if (inputValue.indexOf(value) !== -1) {
        var inputValueArray = inputValue.split(','),
            index = inputValueArray.indexOf(value);

        inputValueArray.splice(index, 1);

        self.setValue(inputValueArray);
        self.focus();
      } else {
        return self.onOptionSelect.apply(self, arguments);
      }
    });
  }
});

下一步是使用先前创建的插件初始化Selectize,如下所示:

var $accountsSelectize = $('#accounts-input').selectize({
  plugins: ['click2deselect'],
  ...
});

就是这样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Selectize.js-退格键以清除该字段在移动浏览器上不起作用

来自分类Dev

销毁Selectize.js实例

来自分类Dev

Selectize.js事件-无法正常工作

来自分类Dev

Selectize.js和jQuery验证

来自分类Dev

selectize.js重新加载下拉列表

来自分类Dev

Selectize.js getAdjacentOption()如何工作?

来自分类Dev

在selectize.js中停止传播

来自分类Dev

selectize.js 占位符宽度问题

来自分类Dev

在selectize.js中使用selectize api为列表框设置默认值

来自分类Dev

selectize.js动态添加选项以进行选择

来自分类Dev

Selectize.js:如何对整数值的选项进行排序?

来自分类Dev

强制 selectize.js 仅显示以用户输入开头的选项

来自分类Dev

selectize.js:清除onChange事件中的选定值

来自分类Dev

Selectize.js-停止事件item_add

来自分类Dev

如何在selectize中禁用输入和选项的顺序

来自分类Dev

使用selectize的多个<select>,如果已选择则删除选项

来自分类Dev

selectize.js-如何禁用选定项目后的闪烁光标?

来自分类Dev

如何滑动Selectize.js下拉菜单?

来自分类Dev

如何为selectize.js输入设置值?

来自分类Dev

如何获取当前选定的Selectize.js输入项的值

来自分类Dev

如何清除Selectize.js下拉列表中的选定值?

来自分类Dev

如何更改selectize.js下拉列表的占位符?

来自分类Dev

如何使用Angular以编程方式设置selectize.js值?

来自分类Dev

使用Selectize.js从SQL进行远程数据加载

来自分类Dev

将值加载到Selectize.js中

来自分类Dev

如何在selectize.js中设置默认值?

来自分类Dev

selectize.js远程填充其他输入

来自分类Dev

在Selectize.js项目中渲染角度指令

来自分类Dev

用Flask填充Selectize.js下拉列表

Related 相关文章

热门标签

归档