0

我在绑定到使用 jQuery UI 小部件工厂的小部件的“创建”事件时遇到问题。只有当我在小部件之外绑定到它时才会发生这种情况。请参阅片段(为测试目的而简化)

(function($){

    $.widget('pr.test', {
        options: {
            create: function(e){
                // Shows up in the console
                console.log('Widget created');
            }
        }
    });

})(jQuery);

然后稍后在其他文件中我绑定到这个事件

jQuery(document).ready(function($){

    $('body').test().on('testcreate', function(){
        // Doesn't show up in the console
        console.log('Widget created');
    });

});

我知道我可以这样做

$('body').test({
    create: function(){
        console.log('Widget created')
    }
});

但我需要能够在小部件初始化后多次绑定到事件。有人可以解释一下问题是什么吗?谢谢。

4

1 回答 1

0

如果有人遇到同样的问题,请回答我自己的问题。我的错误是在小部件初始化之后调用了 .on() 方法,而我之前应该调用它。据我了解,该脚本在触发时不知道绑定到“创建”事件的任何事件处理程序。

看到这个小提琴

$.widget('pr.test', {
    options: {
        create: function(){
            console.log('Called from within the widget');
        }
    }
});

// Binding to the event before it is fired
$('body').on('testcreate', function(){
    console.log('Called from outside the widget');
});

$('body').test();

// Binding to the event after it is fired
$('body').on('testcreate', function(){
    console.log('This will not work');
});
于 2014-02-07T11:09:39.190 回答