Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在单击时编写类似jQuery的回调_Javascript_Jquery_Callback - Fatal编程技术网

Javascript 在单击时编写类似jQuery的回调

Javascript 在单击时编写类似jQuery的回调,javascript,jquery,callback,Javascript,Jquery,Callback,在jQuery中,可以使用如下回调: $('#btn').on('click', function() { // code }); 我怎样才能写出像I.e foo.on('bar', function() { // code }); foo.on('buzz', function() { //code }); ? 谢谢。这是jQuery中的一条有效语句,用于调用触发事件所需的方法 像 下面的文章将很有帮助 如何在jQuery中创建自定义事件 jQuery的.

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

$('#btn').on('click', function() {
 // code
});
我怎样才能写出像I.e

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

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


谢谢。

这是jQuery中的一条有效语句,用于调用触发事件所需的方法


下面的文章将很有帮助

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

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

$.event.trigger({
    type: "newMessage",
    message: "Hello World!",
    time: new Date()
});
处理程序现在可以订阅“newMessage”事件,例如

$(document).on("newMessage", newMessageHandler);
就像这样:

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
            }
        }
    }
}

更重要的是,什么是
bar
buzz
:)你应该看看。对不起,这段代码不是jQuery,但我想要的是类似它的东西<在我的例子中,code>foo是一个我想写的验证模块<代码>'bar'和
'buzz'
是来自验证模块的各种结果(因此它们可能是
'success'
'failure'
)。我只是想把这个问题概括一下……假设
foo
是一个jQueryinstance@David对假设
foo
是jQuery包装对象,您没有回答这个问题。
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
            }
        }
    }
}
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