JavaScript/JQuery: $(window).resize how to fire AFTER the resize is completed?

前端 未结 12 672
终归单人心
终归单人心 2020-11-22 08:54

I\'m using JQuery as such:

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

However, it appears that if the person manually resizes their browser wind

12条回答
  •  渐次进展
    2020-11-22 09:30

    Many thanks to David Walsh, here is a vanilla version of underscore debounce.

    Code:

    // Returns a function, that, as long as it continues to be invoked, will not
    // be triggered. The function will be called after it stops being called for
    // N milliseconds. If `immediate` is passed, trigger the function on the
    // leading edge, instead of the trailing.
    function debounce(func, wait, immediate) {
        var timeout;
        return function() {
            var context = this, args = arguments;
            var later = function() {
                timeout = null;
                if (!immediate) func.apply(context, args);
            };
            var callNow = immediate && !timeout;
            clearTimeout(timeout);
            timeout = setTimeout(later, wait);
            if (callNow) func.apply(context, args);
        };
    };
    

    Simple usage:

    var myEfficientFn = debounce(function() {
        // All the taxing stuff you do
    }, 250);
    
    $(window).on('resize', myEfficientFn);
    

    Ref: http://davidwalsh.name/javascript-debounce-function

提交回复
热议问题