窗口调整大小事件仅触发一次

6

我试图在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",...)

这些方法都没有起作用,还有其他我没试过的方法吗?


不确定为什么它不起作用。对我来说是可以工作的:http://jsfiddle.net/bakgq9g7/ - karthikr
1
在纯JS中,它是window.onresize = resizeHandler; - myfunkyside
仅使用 window,您将无法调用 .resizeonone,因为它不是 jQuery 对象,在 jQuery 调用中它期望一个函数引用而不是函数调用的返回值。在 alert 调用的返回值是 undefined 的情况下,您根本没有设置回调。 - Patrick Evans
重复,重复。。。基本上是没有提供函数作为事件处理程序。 - user2864740
2个回答

4
这段代码只会在页面加载时被调用一次,因为 document.ready 事件只会被消耗一次。
$(document).ready(function(){
     window.resize(alert("yolo"));
});

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

1
如果你不想被弹出窗口搞疯,最好使用 console.log 而不是 alert() - myfunkyside
1
你还把它写成了$(document).ready(function(){ window.resize(alert("yolo")); });。你想要的是window.resize(function () {alert("yolo");}); - Abbath
1
你正在将函数绑定到页面加载事件,而不是窗口调整大小事件。 - Abbath

0

你的 alert('yolo') 在被 JavaScript 运行时消耗时立即执行。这就是为什么你只在页面加载时看到它一次。

此外,window.resize 不存在,但 window.onresize 存在:

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

.resize() 存在于 jQuery 中,这是他正在使用的。 - jarrodwhitley
window.resize() 不存在,无论是否使用jQuery。$(window).resize() 只在jQuery中存在。 - Yoann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接