javascript – 在窗口调整大小时调用多个函数

前端之家收集整理的这篇文章主要介绍了javascript – 在窗口调整大小时调用多个函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我在窗口调整大小时触发了多个函数
$(window).resize(checkNav); 
            $(window).resize(checkWidth); 
            $(window).resize(checkSlider);

而我正在寻找的是从同一窗口运行它们调整大小如下:

$(window).resize(checkNav && checkWidth && checkSlider);

我只是不知道写下来!我能找到的最好的方法是在窗口调整大小调用一个函数,然后调用三个,但是想要删除这个中间函数.

谢谢

解决方法

你不能削减中间人.你唯一能做的就是匿名(这是一个词吗?)他让你更容易忘记他:
$(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,f3));

如您所见,当其中一个处理程序返回false时,传播将停止.如果需要,您可以更改它以检查事件的状态,因为它更符合标准.作为一个起点,我会说它非常好.

猜你在找的JavaScript相关文章