我發現在我的頁面中調整大小的代碼在設備中的方向更改期間觸發多次。懷疑這是由於其他事件,如在頁面模式中發生頁面滾動發生從景觀變爲人像,反之亦然。我需要在窗口大小調整中編寫邏輯,但不止一次調用它。有沒有什麼辦法可以避免其他事件影響窗口大小調整如何避免由其他事件觸發的多次觸發的窗口大小調整
0
A
回答
1
窗口大小調整事件在每個窗口調整大小過程中會多次觸發。正如Rory McCrossan在上面指出的那樣,事件每發生一次像素變化都會觸發一次。
一種選擇是使用一個debounce
功能,如由David沃爾什描述:
https://davidwalsh.name/javascript-debounce-function
下面是另一種有用的文章中,描述節流和去抖動之間的差:
https://css-tricks.com/the-difference-between-throttling-and-debouncing/
最後,您可以使用不太優雅(但同樣有效)的方法來使用全局變量來跟蹤您希望何時允許調整事件觸發。
var ok_to_resize=true;
$(function(){
$(window).resize(function(){
if (ok_to_resize){
//run your resize code
ok_to_resize = false;
setTimeout(function(){
ok_to_resize = true;
},500);
}
}); //END window.resize
}); //END document.ready
+0
'debounce'和你最後一個例子幾乎是一樣的。他們只是將它包裝得整潔一些,並使用元素自己的屬性而不是全局變量。 – SpYk3HH
相關問題
- 1. jQuery窗口調整大小觸發器只觸發一次
- 2. 如何在Angular中觸發窗口大小調整事件
- 3. 調整元素的大小會觸發窗口的大小調整事件
- 4. 如何觸發調整大小事件?
- 5. 窗口調整大小不能觸發
- 6. 爲X窗口觸發調整大小事件
- 7. 用dojo觸發窗口調整大小事件
- 8. jQuery:僅當窗口被調整大小時觸發事件
- 9. 當在jQuery中調整大小()時,觸發多次觸發
- 10. toggleClass在調整瀏覽器窗口大小時觸發兩次
- 11. 如何根據窗口寬度觸發調整大小功能
- 12. 如何觸發我的jQuery腳本調整大小事件
- 13. WPF窗口:sizechanged事件觸發兩次
- 14. jQuery觸發器事件觸發多次
- 15. 觸發事件黑莓觸發多次
- 16. 在窗口調整大小事件時觸發不同的執行
- 17. 觸發窗口調整大小的jQuery功能
- 18. 在調整大小事件時觸發多個函數
- 19. 如何使用nvd3觸發調整大小事件?
- 20. 如何在瀏覽器上觸發事件調整大小
- 21. orientationchange事件觸發滾動和調整大小事件
- 22. 調整事件未觸發
- 23. 調整窗口時在Chrome中觸發的Mouseenter事件
- 24. 點擊輸入字段觸發器窗口調整大小android
- 25. jQuery函數在調整窗口大小之前不會觸發
- 26. 當觸發器被激活時,HD Phone調整窗口大小
- 27. 點擊輸入欄觸發窗口調整大小
- 28. AngularJS:如何避免 - 從app.js調用的廣播事件被觸發兩次?
- 29. ViewModel事件多次觸發
- 30. 事件觸發多次
因爲如果出於調試目的,你解除了任何其他事件,那麼調整大小隻會被觸發一次?!...? –
請注意,調整大小事件會針對窗口大小更改的每個*像素*引發一次。 –
http://stackoverflow.com/questions/16595864/fire-resize-event-once-on-size-down-and-once-on-size-up/16596023#16596023 – SpYk3HH