我在识别Jnery小部件中的错误代码方面遇到了问题。我试图在公共方法中获取this.options。但我收到了错误
“输入错误:未定义this.option”
“ bindOption 正好在
self.find(this.options.selectionGroup +“”+ this.options.selectionElement)
this.options让我看到了这个范围,我要去哪里?
我的代码如下:
_create: function() {
var self = this;
var $el = this.element;
$el.find(this.options.optionsGroup + " .option").on('click',
this.bindOption);
this._hideToggle($el, this.options.optionsGroup, 'show');
},
bindOption: function() {
$val = $(this).html();
var self=this;
$data = $(this).attr('data-option');
self.find(this.options.selectionGroup + " " + this.options.selectionElement)
.attr('data-selection', $data).html($val);
}
解决:
在bindOption中使用self.find,但它需要对元素应用find(),所以我改了
self.find(this.options.selectionGroup + " " + this.options.selectionElement)
到
self.element.find(this.options.selectionGroup + " " + this.options.selectionElement)
答案 0 :(得分:1)
您需要使用
$el.find(this.options.optionsGroup + " .option").on('click', $.proxy(this.bindOption, this));
由于bindOption
被添加为事件的回调,this
内的bindOption
未指向窗口小部件,它引用触发事件的dom元素。您可以使用$.proxy()