可以用jQuery中的unbind()來進行事件解綁。 1 $(window).scroll(function() { 2 console.log("滾離頂部" + $(document).scrollTop()); 3 4 //... 5 6 //對window對象進行scroll事件解綁 7 $ ...
可以用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 });