3

在 jQuery 中,您可以使用如下回调:

$('#btn').on('click', function() {
 // code
});

我怎样才能写出像 ie 这样的东西

foo.on('bar', function() {  
    // code 
});

foo.on('buzz', function() {  
    //code 
});

?

谢谢。

4

3 回答 3

4

它是 jQuery 中的有效语句,调用您需要使用.trigger(eventname)触发事件的方法

喜欢

foo.trigger('foo')
于 2013-10-04T13:41:17.480 回答
3

下面的文章会有所帮助

如何在 jQuery 中创建自定义事件

http://www.sitepoint.com/jquery-custom-events/

jQuery 的 .trigger 方法是关键。您可以在任何时候触发具有新类型名称和任意数据的事件,例如

$.event.trigger({
    type: "newMessage",
    message: "Hello World!",
    time: new Date()
});

处理程序现在可以订阅“newMessage”事件,例如

$(document).on("newMessage", newMessageHandler);
于 2013-10-04T13:43:21.353 回答
2

像那样:

var eventBus = function () {

    var supportedEvents = ['bar', 'buzz'];

    var subscribers = {};
    for (var i = 0; i < supportedEvents.length; i++) {
        subscribers[supportedEvents[i]] = [];
    }

    return {
        on: function (event, action) {
            subscribers[event].push(action);
        },

        trigger: function (event) {
            var funsToCall = subscribers[event] || []; // empty array if unsupported event
            for (var i = 0; i < funsToCall.length; i++) {
                funsToCall[i](); // calling a function
            }
        }
    }
}

然后您调用该eventBus函数来获取一个对象,该对象将是您的foo

var foo = eventBus();

foo.on('bar', function () {
    console.log('bar');
});

foo.on('buzz', function () {
    console.log('buzz');
});

foo.trigger('bar'); // prints 'bar' to the console
foo.trigger('buzz'); // prints 'buzz' to the console
于 2013-10-04T13:57:58.303 回答