jQuery调整大小事件没有触发

bre*_*ish 14 javascript jquery window-resize

无论出于何种原因如下:

$(function() {
  $(window).resize(function() {
    alert("resized!");
  });
});
Run Code Online (Sandbox Code Playgroud)

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

任何想法或解决方法?

mcg*_*ilm 11

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

 $(window).resize(function() {
   $('body').prepend('<div>' + $(window).width() + '</div>');
 });
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

  • 我也尝试过(从jQuery resize()docs)并在页面加载(或重新加载)时显示初始宽度,但是当我调整浏览器窗口大小时没有任何反应.叹. (2认同)

Kri*_*nov 11

最好是避免连接到可能产生大量的触发,如窗口大小调整和车身滚动,更好的方法,从这些事件驱是使用计时器,以确认是否即使已经发生的事件,然后执行适当的行动,像这样:

$(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);
});
Run Code Online (Sandbox Code Playgroud)

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

  • 此解决方案将每隔300毫秒运行setInterval闭包以永久性,这对于高性能站点而言不是最佳方法.这是解决问题的更好方法:http://www.marcuspope.com/better-resize-event-handler (21认同)
  • [这是一个关于Marcus Pope链接到的代码的JSFIddle](http://jsfiddle.net/v7LN6/)(以防万一它会发生故障) (6认同)