您想要做的是称为多播委托,您可以在其中为同一事件分配多个独立的处理程序。它可以用 JavaScript 编写如下:
function multicast(){
if (arguments == null || arguments.length == 0) return function(){ };
var fns = [], j = 0;
for (var i = 0; i < arguments.length; i++){
if (typeof(arguments[i]) == "function")
fns[j++] = arguments[i];
}
return function(){
for (var i = 0; i < fns.length; i++)
fns[i]();
};
}
然后调用为:(其中 foo 和 bar 都是函数)
window.onload = multicast(window.onload, foo, bar);
不需要 JQuery 这严格来说是 JavaScript。您会注意到每个函数都将按顺序执行,但独立于先前函数调用的返回值(如果有)。
您将在Delphic Sage中找到对此的更完整描述。我还要注意,链接文章的作者归功于 John Resig 的教程Learning Advanced JavaScript
[编辑] 我想你的问题中缺少一些东西。我阅读它的方式应该可以满足您的要求:(使用上面的函数 multicast() )
$(#'foo').bind('bar',multicast(firstFunction, secondFunction);
现在,当“bar”发生时,firstFunction 将立即执行,然后是 secondFunction,并且无论 firstFunction 是否“取消事件”都会这样做