Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui jqueryui小部件';改变';事件_Jquery Ui_Events_Widget - Fatal编程技术网

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() { ... });