【问题标题】:Can I call a funcion when I stop to "resize" the window? [duplicate]当我停止“调整”窗口大小时,我可以调用一个函数吗? [复制]
【发布时间】:2012-08-21 13:30:34
【问题描述】:

可能重复:
javascript resize event firing multiple times while dragging the resize handle

试过了:

$(window).bind('load resize', function (e) {
    console.log("resized");
});

但它为窗口的每一个小动作都写了“调整大小”。我可以仅在完成(停止)后调用函数(在本例中为 console.log())来调整窗口大小吗?

谢谢!

【问题讨论】:

  • resize 事件在窗口尺寸变化时连续触发;没有任何事件表明调整大小已完成。
  • 这篇文章特别有你的答案stackoverflow.com/a/668185/54746

标签: jquery


【解决方案1】:

如果在接下来的 100 毫秒内没有新的调整大小事件,您可能只是定义调整大小完成。像这样:

var resizeEnd;
$(window).bind('resize', function(e) {
    clearTimeout(resizeEnd);
    resizeEnd = setTimeout(function() {
        console.log("resized");
    }, 100);
});

【讨论】:

  • 为什么你的作品而不是我的? jsfiddle.net/FpXQq
  • .setTimeout 需要一个函数作为参数。您需要将其更改为 timerResizer = setTimeout(function () {console.log("resized")}, 1000);
  • 除了你不需要那个 if (timerResizer !== false) check.. 用 undefined 作为参数调用 clearTimeout 没问题;)
【解决方案2】:

在调整窗口大小时,Resize 会持续触发,而在不调整大小时不会触发。因此,您无法识别连续调整大小何时停止,因此请坚持在触发调整大小事件时起作用的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2018-08-04
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2012-08-04
    • 2020-05-04
    相关资源
    最近更新 更多