Jquery ui jQuery UI小部件鼠标事件在小部件状态下获取?

Jquery ui jQuery UI小部件鼠标事件在小部件状态下获取?,jquery-ui,Jquery Ui,使用jQuery UI小部件工厂模式1.8,在鼠标事件中,我很难找到小部件对象本身: $.widget('foo.myWidget', { _create: function() { var $container = this.element.wrap('<div class="ui-widget" />').parent(); // Create a widget container $container.append('<div class="myWid

使用jQuery UI小部件工厂模式1.8,在鼠标事件中,我很难找到小部件对象本身:

$.widget('foo.myWidget', {
  _create: function() {
    var $container = this.element.wrap('<div class="ui-widget" />').parent(); // Create a widget container
    $container.append('<div class="myWidgetControl" />'); // Add some clickable thing
    $container.find('.myWidgetControl').on('mouseup.myWidget', this._handleClick); // Watch the mouse event
  },
  options: { // Widget factory options object
    secretKey: 'foobar'
  },
  _handleClick: function(e) {
    // User clicked on ".myWidgetControl"
    // this == DOM element .myWidgetControl
    // e == the jQuery event object

    // I need to get options.secretKey; how do I find it?!?
  }
});
在这种情况下,您如何找到用户最初在示例中为该小部件myDiv实例设置的选择器?

找到了一个解决方案,将此问题留待讨论,看看是否有更好的方法:

作为小部件开发人员,我知道容器元素是什么;因此,请使用保存对小部件的引用,以便我以后可以找到它:

_create: function() {
  /* existing code */
  var $container = this.element.wrap('<div class="ui-widget" />').parent();
  $container.data('widget', this); // Save for later
},
_handleClick: function(e) {
  var $container = $(this).parentsUntil('.ui-widget').parent(); // Traverse the tree to find the root element I saved the data for
  var widget = $container.data('widget');
  alert(widget.options.secretKey); // Success! (Don't actually display your secretKey in an alert...)
}
_create: function() {
  /* existing code */
  var $container = this.element.wrap('<div class="ui-widget" />').parent();
  $container.data('widget', this); // Save for later
},
_handleClick: function(e) {
  var $container = $(this).parentsUntil('.ui-widget').parent(); // Traverse the tree to find the root element I saved the data for
  var widget = $container.data('widget');
  alert(widget.options.secretKey); // Success! (Don't actually display your secretKey in an alert...)
}