How to wait for the 'end' of 'resize' event and only then perform an action?

后端 未结 24 1639
深忆病人
深忆病人 2020-11-22 09:39

So I currently use something like:

$(window).resize(function(){resizedw();});

But this gets called many times while resizing process goes o

24条回答
  •  广开言路
    2020-11-22 10:04

    ResizeStart and ResizeEnd events for window

    http://jsfiddle.net/04fLy8t4/

    I implemented function which trig two events on user DOM element:

    1. resizestart
    2. resizeend

    Code:

    var resizeEventsTrigger = (function () {
        function triggerResizeStart($el) {
            $el.trigger('resizestart');
            isStart = !isStart;
        }
    
        function triggerResizeEnd($el) {
            clearTimeout(timeoutId);
            timeoutId = setTimeout(function () {
                $el.trigger('resizeend');
                isStart = !isStart;
            }, delay);
        }
    
        var isStart = true;
        var delay = 200;
        var timeoutId;
    
        return function ($el) {
            isStart ? triggerResizeStart($el) : triggerResizeEnd($el);
        };
    
    })();
    
    $("#my").on('resizestart', function () {
        console.log('resize start');
    });
    $("#my").on('resizeend', function () {
        console.log('resize end');
    });
    
    window.onresize = function () {
        resizeEventsTrigger( $("#my") );
    };
    

提交回复
热议问题