jQuery UI小部件'更改'事件

时间:2012-03-22 22:55:36

标签: jquery-ui events widget

我试图维护一个使用以下两行代码之一触发事件的小部件:

this.element.trigger('change');  // or...
stop: function (event, ui) { that.element.change(); }

改变'在代码中只出现4次,在上面的两种形式之一中。但是,我不知道这里发生了什么。在更改调用中没有事件处理程序,并且没有绑定,委托,打开或实时调用,因此外部设备可能会设置此项。任何人都可以填写我吗?这有什么文件吗?感谢。

2 个答案:

答案 0 :(得分:2)

这两行代码只是使用两种不同的允许语法触发更改事件this.element

使用.trigger()

this.element.trigger('change');

或使用简写方法.change()

that.element.change();

您实际上可以将事件处理程序绑定到this.element表示的元素以处理此事件。


在不知道您的插件的情况下,很难准确地回答您this.element

但是以自动完成插件为例。在这一个中,this.element实际上是自动完成插件应用于的输入字段。如果更改事件被触发,就像在您的问题中所做的那样,您可以将事件处理程序绑定到输入,如下所示:

$('#myinput')
    .autocomplete()
    .bind('change', function() { });

现在,如果此插件依赖于jQuery UI Widget Factory,建议使用方法_trigger()来触发事件而不是jquery .trigger()。

使用_trigger()将确保使用正确的上下文执行插件选项中定义的任何回调,并触发this.element的事件(如上所述)。所以你可以:

$('#myinput')
    .somePlugin({
        change: function(e, someData) {
            // "this" here will be `this.element´
        }
    })
    .bind('change', function() { ... });

答案 1 :(得分:0)

答案结果很简单 - 没有事件处理程序,没有绑定/ etc调用,jQuery在幕后不执行任何操作,因此触发器调用什么也没做。我对它们进行了评论,并且小部件的行为完全相同。卫生署。