jQuery onClick多个回调

时间:2014-08-05 12:59:48

标签: javascript jquery callback

如何为jQuery事件注册多个回调?我想要实现的一个例子:

$(document).on("click", ".someclass", CallbackFunction1, CallbackFunction2);

function CallbackFunction1(event) {
    //Do stuff
}

function CallbackFunction2(event) {
    //Do some other stuff
}

如何设置事件处理程序以在单击元素时执行两个回调函数?

4 个答案:

答案 0 :(得分:11)

您可以将它们作为单独的事件处理程序附加:

$(document).on("click", ".someclass", CallbackFunction1)
           .on("click", ".someclass", CallbackFunction2);

答案 1 :(得分:4)

除非我误解了您的要求,否则您可以使用单个事件处理程序:

$(document).on('click', '.someclass', function(e){
    CallbackFunction1(e);
    CallbackFunction2(e);
});

答案 2 :(得分:0)

如果你将重用它来绑定不同元素的不同处理程序列表,我会创建一个工厂。

function multiFunction(){
    var methods = Array.prototype.slice.call(arguments, 0);
    return function(e){
        for (var f=0, l = methods.length; f<l; f++) {
            methods[f].apply(this, arguments);
        }
    }
}

并像这样调用

$(document)
    .on('click', 'someclass', multiFunction( CallbackFunction1, CallbackFunction2));
    .on('click', 'someotherclass', multiFunction( CallbackFunction8, CallbackFunction1, CallbackFunction5));

http://jsfiddle.net/gaby/D8K75/

演示

答案 3 :(得分:-1)

您可以使用第三个功能,然后重新调用其他功能:

$(document).on("click", ".someclass", CallbackFunction);

function CallbackFunction(event) {
    CallbackFunction1(event);
    CallbackFunction2(event);
}

function CallbackFunction1(event) {
    //Do stuff
}

function CallbackFunction2(event) {
    //Do some other stuff
}