首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在jQuery小部件中获取小部件实例?

如何在jQuery小部件中获取小部件实例?
EN

Stack Overflow用户
提问于 2011-02-14 03:46:41
回答 1查看 5K关注 0票数 3

我正在为一个项目开发一个键盘小部件,我正在扩展$.ui.mouse。我需要点击行为(不是由_mouseCapture触发)。我很难把this.options放回里面。请看下面的代码块:

代码语言:javascript
代码运行次数:0
运行
复制
$.widget("ui.keyboard", $.ui.mouse, {
    widgetEventPrefix: "keyboard",
    options: {
        [...]
    },
    [...],
    _create : function() {
        this.element.bind('click.'+this.widgetName, this._mouseClick);
    },
    _mouseClick: function(e) {
        // how do i get this.options here
    }
});

这样做最好吗:

代码语言:javascript
代码运行次数:0
运行
复制
$.widget("ui.keyboard", $.ui.mouse, {
    widgetEventPrefix: "keyboard",
    options: {
        [...]
    },
    [...],
    _create : function() {
        var self = this;
        this.element.bind('click.'+this.widgetName, function(e) { self._mouseClick(e, self); });
    },
    _mouseClick: function(e, self) {
        // how do i get this.options here -> self.options
    }
});

或者这样:

代码语言:javascript
代码运行次数:0
运行
复制
$.widget("ui.keyboard", $.ui.mouse, {
    widgetEventPrefix: "keyboard",
    options: {
        [...]
    },
    [...],
    _create : function() {
        this.element.bind('click.'+this.widgetName, this._mouseClick);
    },
    _mouseClick: function(e) {
        var self = $.data(this, "keyboard");
        // how do i get this.options here -> self.options
    }
});

当我尝试手动触发最后一个时,我遇到了问题,除非我点击this.element (这是非常符合逻辑的),否则$.data是不会打开的。

还有别的办法吗?哪个是最好的选择?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-14 04:01:08

您可以调用一个返回对象的匿名函数,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
$.widget("ui.keyboard", $.ui.mouse, function(){
  var self;

  return {
    widgetEventPrefix: "keyboard",
    options: {
      [...]
    },
    _create : function() {
      self = this;
      this.element.bind('click.'+this.widgetName, function(e) { self._mouseClick(e, self); });
    },
    _mouseClick: function(e, self) {
      // do something with self.options
    }
  }
}());

这样,您就可以从_mouseClick-

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4986434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档