JQuery事件处理程序范围

时间:2011-09-10 10:46:36

标签: jquery jquery-ui

说我有这个(jqueryUI插件):

  $.widget('ui.someplugin', {
    _create: function() {
      return $(this.element).click(this._onClick);
    },
    _onClick: function(e) {
      return this._someFunc();
    },
    _someFunc: function() {
      return console.log('someFunc');
    }
  });

它不起作用 - _onClick接收DOM元素作为其范围。我可以让处理程序再次使用$(e.target).data('someplugin')引用该插件,但如果我想订阅其他DOM元素事件那就没用了。我如何重新调整它以便它能满足我的需求?

1 个答案:

答案 0 :(得分:7)

使用$.proxy(func, context);func将调用范围为context

return $(this.element).click($.proxy(this._onClick, this));

另请参阅:Controlling the value of 'this' in a jQuery event