0

我在识别 Jquery 小部件中的 y 代码有什么问题时遇到了问题。我试图在公共方法中获取 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)
4

1 回答 1

1

你需要使用

$el.find(this.options.optionsGroup + " .option").on('click', $.proxy(this.bindOption, this));

由于bindOption被添加为事件的回调,所以thisinsidebindOption并不指向小部件,它指的是触发事件的 dom 元素。您可以通过使用$.proxy()将自定义执行上下文传递给回调处理程序来修复它

于 2013-08-07T03:32:40.003 回答