如何在widget创建的jQuery UI Widget Factory事件中添加监听器?

时间:2016-02-11 03:07:16

标签: jquery jquery-ui

我在链接中读到,当使用on创建jQuery UI小部件时,我们可以拥有事件处理程序。

https://api.jqueryui.com/jquery.widget/#event-create

$( ".selector" ).on( "widgetcreate", function( event, ui ) {} );

但是当我尝试使用下面的JSFiddle时,它不起作用。

$.widget( "my.customwidget", {
    _create: function() {
        alert('Hi!');
    }
});
$('#widget').on('widgetcreate', function (event, ui) {
    alert('Hi again!');
});
$('#widget').customwidget();

alert('Hi again!')未执行。这是fiddle

除非我这样做。

$.widget( "my.customwidget", {
    _create: function() {
        this.element.trigger('widgetcreate');
    }
});

我做错了什么?

1 个答案:

答案 0 :(得分:4)

事件使用窗口小部件本身的名称绑定,即。 "customwidget"。由于继承模型,您只有customwidget元数据,而不是widget元数据。在您的示例中,事件的名称实际上是customwidgetcreate

$('#widget').on('customwidgetcreate', function (event, ui) {
    alert('Hi again!');
});

这里有更新的小提琴:https://jsfiddle.net/2z06faLn/

前一段有类似话题的相关问题:Why is $(...).widget undefined?