1

当我调整浏览器大小时,它会发出多个警报。我使用“return false”不起作用。

如果我使用 unbind()/unbind('resize') 那么它可以工作,但它会产生另一个问题 - resize() 函数从第二次浏览器/窗口调整大小时停止工作。

我的代码-

<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {

    alert($(".myclass").parent().width());

    $(window).bind('resize',function() {
        alert($(".myclass").parent().width());
    });

});
</script>
<section class="myclass"></section>
4

4 回答 4

0

这不是 jQuery 的问题,而是浏览器调整大小的实现。

根据您使用的浏览器,它可能会触发中间调整大小,或者仅在释放鼠标时触发调整大小。

于 2013-03-22T13:54:30.667 回答
0

因为每次浏览器更改时都会触发调整大小。

如果您调整 100 像素的大小,它最多可以触发 100 次。

只有在您停止调整窗口大小时,这样的事情才会起作用并触发:

var resizing = false, stopedResizing = true;
$(window).bind('resize',function() {
    if(!resizing){
        console.log("started resizing. Width = " + $(".myclass").parent().width());
        resizing = true;
    }
    stopedResizing = false;
    setTimeout(function(){
       if(!stopedResizing){
           stopedResizing = true;
           setTimeout(function(){
               if(stopedResizing && resizing){
                resizing = false;
                console.log('Stoped resizing. Width = ' + $(".myclass").parent().width());
               }
           }, 500);
       }
    }, 500);
});
于 2013-03-22T13:53:42.250 回答
-1

您可以执行以下操作:

$(document).ready(function(e) {

    alert($(".myclass").parent().width());
    var lastTime = 0;

    $(window).bind('resize',function() {
        var currentTime = new Date().time();
        if(currentTime > lastTime + 5000)
            alert($(".myclass").parent().width());
        lastTime = currentTime;
    });

});

...这样它只会在至少相隔 5 秒的调整大小时触发。但通常情况下,您希望在调整大小停止时采取行动,而不是在开始时采取行动。

于 2013-03-22T13:58:10.807 回答
-1

此代码在发生调整大小事件后在窗口的鼠标悬停时触发。

$(document).ready(function() {

        var windowResized = false;

        function callFunction() {

            console.log("I am called once after window resize");
        }


        $(window).mouseover(function() {

            if (windowResized == true) {

                callFunction();
                windowResized = false;
            }

        })

        $(window).resize(function() {

            windowResized = true;

        });

    })
于 2013-03-22T14:01:43.103 回答