Jquery ui jqueryui小部件';改变';事件
我试图维护一个小部件,它使用以下两行代码之一触发事件:Jquery ui jqueryui小部件';改变';事件,jquery-ui,events,widget,Jquery Ui,Events,Widget,我试图维护一个小部件,它使用以下两行代码之一触发事件: this.element.trigger('change'); // or... stop: function (event, ui) { that.element.change(); } “更改”一词在代码中仅出现4次,以上述两种形式之一出现。然而,我不知道这里发生了什么。change调用中没有事件处理程序,也没有bind、delegate、on或live调用,因此可能是外部设置的。有人能告诉我吗?这上面有文件吗?谢谢。这两行代码只需
this.element.trigger('change'); // or...
stop: function (event, ui) { that.element.change(); }
“更改”一词在代码中仅出现4次,以上述两种形式之一出现。然而,我不知道这里发生了什么。change调用中没有事件处理程序,也没有bind、delegate、on或live调用,因此可能是外部设置的。有人能告诉我吗?这上面有文件吗?谢谢。这两行代码只需使用两种不同的允许语法触发对
此.element
的更改事件
使用:
或使用速记方法:
实际上,您可以将事件处理程序绑定到由this.element
表示的元素来处理此事件
如果不知道你的插件,就很难准确回答这个.element是什么 但以自动完成插件为例。在本例中,
this.element
实际上是应用自动完成插件的输入字段。如果更改事件像您的问题中假定的那样被触发,您可以像下面这样将事件处理程序绑定到输入:
$('#myinput')
.autocomplete()
.bind('change', function() { });
现在,如果此插件依赖于,建议使用方法
\u trigger()
来触发事件,而不是jquery.trigger()
使用_trigger()将确保使用正确的上下文执行插件选项中定义的任何回调,并为this.element
(如上所述)触发该事件。所以你可以:
$('#myinput')
.somePlugin({
change: function(e, someData) {
// "this" here will be `this.element´
}
})
.bind('change', function() { ... });
答案很简单——没有事件处理程序,没有bind/etc调用,jQuery在幕后什么都不做,所以触发器调用什么都不做。我将它们注释掉,小部件的行为完全相同。Doh
$('#myinput')
.autocomplete()
.bind('change', function() { });
$('#myinput')
.somePlugin({
change: function(e, someData) {
// "this" here will be `this.element´
}
})
.bind('change', function() { ... });