javascript - Selectize.js:给定类方法时不调用 onItemAdd 属性

标签 javascript jquery selectize.js

我在使用 onItemAdd 时遇到 selectize.js 问题构造函数的参数 ( https://github.com/brianreavis/selectize.js/blob/master/docs/usage.md#callbacks )。

假设我有一个类,该类实例将保存并管理 selectize 实例。我想动态添加选项,并在选择选项时调用我的类的方法。在下面的代码中,<select id="#select"></select>没有提到但确实存在。

function Class() {
    var self = this;
    // create the selectize instance
    $('#select1').selectize({
        onItemAdd: self._func
    });
    var select = $('#select1')[0].selectize;
    select.addOption({value: 'hello', text: 'Hello'});
    select.addOption({value: 'world', text: 'World'}); 

    self._func = function (value) {
        alert(value);   
    }
}

$(function() {
    new Class();
});

令人惊讶的是,对象方法self._func选择项目时永远不会调用。但是,如果我将其替换为 onItemAdd: function (value) { self._func(value); } 之类的内容,对象方法self._func按预期调用!

演示该问题的 JsFiddle:https://jsfiddle.net/qDL37/1/

有什么理由可以解释这种行为吗?

最佳答案

好吧,我刚写完这篇文章就明白了原因。在上面的示例中,当创建 selectize 实例时,self._func 仍未定义。

要解决此问题,只需在创建 selectize 实例之前声明 _func 即可。

关于javascript - Selectize.js:给定类方法时不调用 onItemAdd 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952721/

相关文章:

javascript - CoffeeScript 不工作

javascript - 如何构建用于部署的静态文件

javascript - Vue 和 Vuex : computed property isn't called when changing state

javascript - <select> 上的 onload 是否有替代方案?

javascript - 如何根据我从ajax获得的json在select上添加禁用的select属性

javascript - 如何获取 ng-form 中的所有元素

php - 如果在 Jquery 中

jquery - 如何防止背景向右滑动(使用 jQuery mmenu)

JavaScript:是否可以在 iFrame 的父级上进行 scrollspy?

javascript - 在 selectize 的下拉列表中创建链接