1. 程式人生 > 其它 >window.onresize與$(window).resize()比較

window.onresize與$(window).resize()比較

window.onresize 是直接給window的onresize屬性繫結事件,只能有一個。也就是說後面的會覆蓋前面。例如:

window.onresize = function(){
    console.log("1")
}
window.onresize = function(){
    console.log("2")
}

當瀏覽器視窗大小發生改變時,只會列印 2。

而jQuery的用法 $(window).resize()可以寫多個方法:

$(window).resize(function(){
    console.log("3")
});
$(window).resize(
function(){ console.log("4") });

會列印3,4。

如何實現不管視窗如何改變,只在停止改變之後才執行程式碼呢?

var resizeTimer = null;
$(window).bind('resize', function (){
        if (resizeTimer) clearTimeout(resizeTimer);
        resizeTimer = setTimeout(function(){
                console.log("視窗發生改變了喲!");
        } , 100);
});

通過增加定時器的方式來讓程式碼延遲執行,這樣每次視窗改變的時候,我們都清除事件,只有當他停下來之後,才會繼續執行。這個方法雖然可以解決resize執行多次的問題,但是感覺還不夠完美。比如有些情況,我們需要視窗改變後立即在頁面上做一些變化,這種方法並不適用。