我在使用 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/