你不能砍掉中间人。你唯一能做的就是匿名(这是一个词吗?)他,这样你就可以更容易地忘记他:
$(window).resize(function(e) {checkNav(e); checkWidth(e); checkSlider(e); });
实际上,既然我深入研究了这个,让我们寻求一个通用的解决方案:
function serializer() {
// arguments is a list of functions
var args = Array.prototype.slice.call(arguments, 0); // clone the arguments
return function() {
// arguments are passed by the event system
var ret;
for (var i=0; i<args.length; i++) {
ret = args[i].apply(this, arguments);
if (ret === false) return ret;
}
return ret;
};
}
function f1(){
console.log(1);
}
function f2(){
console.log(2);
return false;
}
function f3(){
console.log(3);
}
// USAGE:
document.getElementById('test').addEventListener('click', serializer(f1,f2,f3) );
// or with jQuery:
$(window).resize(serializer(f1, f2, f3));
如您所见,当其中一个处理程序返回 false 时,传播将停止。如果需要,您可以更改它以检查事件的状态,因为它更符合标准。不过,作为一个起点,我会说它非常好。