jQueryresize事件没有触发

无论出于何种原因:

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

仅在加载页面时触发事件。 调整浏览器窗口大小在Safari和Firefox中都不起作用。 我没有在任何其他浏览器上尝试过它。

任何想法或解决方法?

我认为你的警报引起了一个问题,试试这个

  $(window).resize(function() { $('body').prepend('
' + $(window).width() + '
'); });

的jsfiddle

最好避免附加可能产生大量触发的事件,例如窗口resize和正文滚动,从这些事件中泛滥的更好方法是使用计时器并validation是否已经发生了偶数,然后执行适当的操作,像这样:

 $(function() { var $window = $(window); var width = $window.width(); var height = $window.height(); setInterval(function () { if ((width != $window.width()) || (height != $window.height())) { width = $window.width(); height = $window.height(); alert("resized!"); } }, 300); }); 

使用计时器执行此操作的另一个好处是您可以完全控制检查的频率,如果您必须考虑页面中的任何其他function,则可以灵活使用

适用于任何浏览器:

http://jsbin.com/uyovu3/edit#preview

 $(window).resize(function() { $('body').prepend('
' + $(window).width() + '
'); });

5年后……

我遇到此问题的唯一浏览器是Chrome; 我没有Safari。

我注意到的模式是它在我内联代码时有效:

  

但是当我把它放在我加载的单独的Javascript文件中时:

  

脚本包含的位置

 console.log('script loaded'); $(window).resize(function(e) { console.log("resize in script file", +new Date()) }); 

我只能猜测这是Chrome开发团队内置的某种“保护”,但它很愚蠢而烦人。 至少他们可以让我绕过这个使用一些“相同的域名政策”。

更新了一段时间我以为使用$(document).ready()修复它,但显然我错了。

尝试

 $(document).resize(function(){ ... };); 

我认为它的文档可以在浏览器中一致地resize。 但我现在不工作去检查我通常做的事情。

我遇到了同样的问题,看到了所有类型的解决方案并且无法正常工作。

进行一些测试我注意到$(window).resize,至少在我的情况下,只会触发$(document).ready()。 不是$(function()); 也不是$(窗口).ready();

所以我现在的代码是:

 $(document).ready(function(){ $(window).resize(function(){ // refresh variables // Apply variables again }); }); 

……甚至是警觉的工作!