window.onresize與$(window).resize()比較
阿新 • • 發佈:2021-07-12
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執行多次的問題,但是感覺還不夠完美。比如有些情況,我們需要視窗改變後立即在頁面上做一些變化,這種方法並不適用。