我在链接中读到,当使用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');
}
});
我做错了什么?
答案 0 :(得分:4)
事件使用窗口小部件本身的名称绑定,即。 "customwidget"
。由于继承模型,您只有customwidget
元数据,而不是widget
元数据。在您的示例中,事件的名称实际上是customwidgetcreate
:
$('#widget').on('customwidgetcreate', function (event, ui) {
alert('Hi again!');
});
这里有更新的小提琴:https://jsfiddle.net/2z06faLn/
前一段有类似话题的相关问题:Why is $(...).widget undefined?