讓$(window).scroll()監聽事件只執行一次


可以用jQuery中的unbind()來進行事件解綁。

1 $(window).scroll(function() {
2     console.log("滾離頂部" + $(document).scrollTop());
3 
4     //...
5 
6     //對window對象進行scroll事件解綁
7     $(window).unbind("scroll");
8 });

 

方法的參數如下(截圖於w3school):

 

額外:

我在一次將scroll()和setInterval()結合起來用時,出現了“貌似unbind()不太奏效”的情況:scroll事件被觸發多次。仔細看了看,發現其實不是unbind()的問題,是代碼結構的問題,我不該一股腦地連scroll()都放進setInterval()里,導致瀏覽器不斷添加一模一樣的監聽事件(這是什么機制呢?)——它們居然每50毫秒增多一個(都處於待命狀態),然后一並被觸發。(所以不是unbind()起不了作用。。也與鼠標滾輪“每滾一小牙,觸發事件次數不止一次”這個特點無關)

錯誤代碼:

1 var i =setInterval(function(){
2 
3     //...
4 
5     $(window).scroll(function(){
6         clearInterval(i);
7         $(window).unbind("scroll");
8     });
9 },50);

正確代碼:

1 var i =setInterval(function(){
2 
3     //...
4 
5 },50);
6 $(window).scroll(function(){
7     clearInterval(i);
8     $(window).unbind("scroll");
9 });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM