【问题标题】:window.resize event only fires once [duplicate]window.resize 事件仅触发一次[重复]
【发布时间】:2014-10-06 01:24:15
【问题描述】:

我正在尝试在 window.resize 上执行操作,但我什至无法多次警觉工作。我所有的代码都是这样的:

HTML:

<head>
    <meta charset="utf-8">
    <script src="jquery-1.11.1.min.js"></script>//I have this library in this html's file directory
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>

  <script type="text/javascript">
    $(document).ready(function(){
      window.resize(alert("yolo"));
    });
  </script>
</head>
<body>
...
</body>

我也尝试了几种变体:

window.resize(...)

window.on("resize",...)

window.one("resize",...)

$(window).resize(...)

$(window).on("resize",...)

$(window).one("resize",...)

它们都不起作用。还有什么我没试过的吗?

【问题讨论】:

  • 不知道为什么它不起作用。为我工作:jsfiddle.net/bakgq9g7
  • 在纯 JS 中是 window.onresize = resizeHandler;
  • 只有window,您将无法调用.resizeonone,因为它不是jQuery 对象,并且对于jQuery 调用,它期望函数引用不是函数调用的返回,在警报返回的情况下调用它的undefined,所以你根本没有设置回调
  • 重复,重复.. 基本上,函数作为事件处理程序提供。

标签: javascript jquery resize jquery-events


【解决方案1】:

这只会被调用一次,因为 document.ready 在页面加载时被消耗。

$(document).ready(function(){
     window.resize(alert("yolo"));
});

您需要将事件处理程序附加到窗口 window.onresize = function() { alert("yolo"); };

$(window).resize(function () {alert("yolo");});

【讨论】:

  • 另外,如果您不想从弹出窗口中发疯,使用console.log 而不是alert() 可能更聪明
  • 您仍然拥有 $(document).ready(function(){ window.resize(alert("yolo")); });。你想要window.resize(function () {alert("yolo");});
  • 您将函数绑定到页面加载事件,而不是窗口调整大小事件。
【解决方案2】:

您的 alert('yolo') 在被 javascript 运行时使用时正在执行。这就是为什么您只会在页面加载时看到一次。

同样window.resize 不存在,但window.onresize 存在:

window.onresize = function (){
    alert('yolo');
};

【讨论】:

  • .resize() 存在于 jQuery 中,这是他正在使用的。
  • window.resize() 不存在,jQuery 与否。 $(window).resize() 可以,仅在 jQuery 中。
猜你喜欢
  • 2023-03-21
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多