【问题标题】:Trigger jQuery function on window resize在窗口调整大小时触发 jQuery 函数
【发布时间】:2014-04-03 14:00:25
【问题描述】:

我想在浏览器窗口的宽度小于/大于 960 像素时触发一个函数。 我写了一些看起来像这样的代码:

$(window).on('resize', function() {
  if ($(window).width() < 960) {

       dosomething();
    } else {         
       dosomething(); 
}
});

当重新调整窗口宽度功能被激活时,它会不断重复每个像素的重复功能,这会产生很多我想避免的请求。有没有办法在超过960px时只激活一次功能?(同样,如果屏幕更改为960以上并再次降低,功能只会再次激活一次)

如果你知道答案,谢谢互联网人!!!


我通过在更改窗口大小时设置超时找到了解决方案:

$(document).ready(function(){
   function resizeStuff() {
     if ($(window).width() < 960)   
 {  
    loadCurrentPage();
} 
else  {
    loadCurrentPage();
}
}
 var TO = false;
 $(window).resize(function(){
 if(TO !== false)
clearTimeout(TO);
 TO = setTimeout(resizeStuff, 200); //200 is time in miliseconds
 });

案件已结案。再次,谷歌中正确的搜索词给出了答案

【问题讨论】:

    标签: jquery resize window width


    【解决方案1】:

    我会做这样的事情

    $(window).on('resize', function() {
        var nextTrigger = 'below';
        if ($(window).width() < 960 && nextTrigger == 'below') {
            nextTrigger = 'above';
            dosomething();
        } else if(nextTrigger == 'above') {
            nextTrigger = 'below';
            dosomething(); 
        }
    });
    

    【讨论】:

    • 所以基本上在事件处理程序中声明一个变量,然后在下一行检查该变量? nextTrigger 如何返回除 below 以外的任何内容?
    【解决方案2】:

    我认为您应该将该状态保存在一个变量中并用它扩展您的 if。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 2016-05-03
      • 2016-10-31
      • 1970-01-01
      • 2021-10-11
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多