То, что вы хотите сделать, называется многоадресными делегатами, где вы назначаете несколько независимых обработчиков для одного и того же события. Это может быть написано на 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 . Я также хотел бы отметить, что автор связанной статьи приписывает учебное пособие Джона Ресига Обучение продвинутому JavaScript
[EDIT]
Я думаю, что-то не хватает в вашем вопросе. То, как я это читаю, должно делать то, что вы просите: (используя функцию multicast () выше)
$(#'foo').bind('bar',multicast(firstFunction, secondFunction);
Теперь, когда происходит 'bar', firstFunction будет выполняться сразу же после secondFunction и будет делать это независимо от того, отменяет ли firstFunction событие '