如何为jQuery事件注册多个回调?我想要实现的一个例子:
$(document).on("click", ".someclass", CallbackFunction1, CallbackFunction2);
function CallbackFunction1(event) {
//Do stuff
}
function CallbackFunction2(event) {
//Do some other stuff
}
如何设置事件处理程序以在单击元素时执行两个回调函数?
答案 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));
演示
答案 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
}