【问题标题】:Do JS function if window width between 800px and 799px如果窗口宽度在 800px 和 799px 之间,则执行 JS 函数
【发布时间】:2017-07-30 04:30:36
【问题描述】:

我已经写了这个简单的代码,当窗口在 799 到 800px 之间时重新加载页面,但它不起作用,有人知道为什么吗?

    $(window).resize(function() {
  if ( $(window).width() > 799 && $(window).width() < 800 {
    location.reload();
  } else {}
});

我还写了这段代码来检查页面重新加载后宽度是否低于 800 以做一些事情

if ($(window).width() < 800) {
  // do some stuff
} else {}

如果断点(例如:800px)被击中,我可能还可以使用一个只切换一次的函数,有什么想法吗?

【问题讨论】:

  • 您的浏览器可能只提供整数宽度值。 799 到 800 之间没有整数。
  • 您认为存在严格小于 800 且严格大于 799 的像素数吗?
  • 799 +1 = 800. 调整大小时为 1 像素?不可能,因为不能逐像素调整大小
  • 我认为它可以在我调整大小时触发该函数,假设我正在调整窗口大小,如果它低于 800,它应该触发一个函数,但只触发一次,我不知道如何解释

标签: javascript jquery width responsive between


【解决方案1】:

您应该使用&gt;=&lt;= 而不仅仅是&gt;&lt;,如下所示:

$(window).resize(function() {
  if ( $(window).width() >= 799 && $(window).width() <= 800 {
    location.reload();
  } else {}
});

&gt; 799 &amp;&amp; &lt; 800 永远不会触发,因为 799 和 800 之间没有整数。

【讨论】:

  • 像这样 .. :/慢慢来,写出正确的答案。
  • 对不起,我只是拼错了。我已经更新了答案
【解决方案2】:

我找到了解决办法:

var ww = $(window).width();
var limit = 800;
function refresh() {
   ww = $(window).width();
   var w =  ww<limit ? (location.reload(true)) :  ( ww>limit ? (location.reload(true)) : ww=limit );
}
var tOut;
$(window).resize(function() {
    var resW = $(window).width();
    clearTimeout(tOut);
    if ( (ww>limit && resW<limit) || (ww<limit && resW>limit) ) {
        tOut = setTimeout(refresh, 10);
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-14
    • 2023-04-07
    • 2014-01-23
    • 1970-01-01
    • 2023-03-10
    • 2016-07-08
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多