【问题标题】:if statements - $(window).width() not working so well in Chrome and IEif 语句 - $(window).width() 在 Chrome 和 IE 中效果不佳
【发布时间】:2013-06-07 08:08:00
【问题描述】:

美好的一天

我想根据窗口宽度或视口大小执行 2 条语句: 这是我的代码:

var w = $(window).width();

if (w > 767){run myFunc()};

if (w < 767){run myFunc()}; //But this function has different CSS Values

问题:

在 Chrome 和 IE(不是 FF)中,只执行第二个 if 语句,与视口大小无关...

为什么会这样?

谢谢

【问题讨论】:

  • 问题是你在哪里/何时调用这个 sn-p?
  • 为什么不打印出'w'变量来查看实际大小
  • 不是自引用推广,而是this question根据窗口大小处理JS文件,可能会有所帮助。
  • 我没有看到问题:jsfiddle.net/DZ9DX/2/embedded/result - 您确定要使用当前宽度更新 w 变量,而不是在加载时对其进行硬编码吗?
  • @Jaay - 打印出变量时,它们显示良好......

标签: jquery if-statement viewport


【解决方案1】:

我想你忘了把它包装在 resize event-handler...

对我来说就像一个魅力:

var myFunc = function(arg){
    console.log(arg);
};

$(window).resize(function(){
    var w = $(window).width();

    if (w > 767) myFunc(1);
    if (w < 767) myFunc(2);
});

http://fiddle.jshell.net/Ms3u5/

【讨论】:

  • 谢谢。但是 top 函数到底是做什么的呢? (var myFunc = function(arg).... ?
  • @DextrousDave 它将传递的argument 记录在console 中。因此,如果 tje window-width 小于 767 它记录 2 否则 1
【解决方案2】:

你可以试试这个……

function myFunc() {
  if ($(window).width() > 767) {
  //then do something
  }else{
  //do something else
  }
}

...但我也同意 yckart,您可能打算包含 re-size 方法。

【讨论】:

    【解决方案3】:

    这行得通:

    var w = window.innerWidth;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-22
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多