this.options没有在公共方法Jquery Widget中定义

时间:2013-08-07 03:23:52

标签: jquery jquery-ui jquery-plugins

我在识别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)

1 个答案:

答案 0 :(得分:1)

您需要使用

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

由于bindOption被添加为事件的回调,this内的bindOption未指向窗口小部件,它引用触发事件的dom元素。您可以使用$.proxy()

将自定义执行上下文传递给回调处理程序来修复它