Jquery ui jQuery UI小部件鼠标事件在小部件状态下获取?
使用jQuery UI小部件工厂模式1.8,在鼠标事件中,我很难找到小部件对象本身: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
$.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...)
}