2016-09-05 130 views
1

我試圖運行滾動加載更多,但我希望它只能運行一次。每次滾動到達頁面底部時,下面的代碼都會繼續運行。 我需要添加一些代碼阻止JavaScript加載不止一次

if ($(window).scrollTop() == $(document).height() - $(window).height() && x==24){ 

,但我不知道該怎麼添加,使其使其只運行一次或使代碼運行不止一次阻止。

<script> 


    if ($(window).scrollTop() == $(document).height() - $(window).height() && x==24){ 



    }); 
}); 
</script> 

所以基本上我的問題是如何防止JavaScript運行多次。

回答

1

如果只需要scroll事件一旦調用該函數,然後你可以從$(window)if語句中使用.off()刪除scroll事件。

body { 
 
    height: 400px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script> 
 
<div id="div1">div </div> 
 
<script> 
 
    x = 24; 
 

 
    $(document).ready(function() { 
 
    $(window).on("scroll.once", function() { 
 

 
     if ($(window).scrollTop() == $(document).height() - $(window).height() && x == 24) { 
 

 
     $(window).off("scroll.once"); 
 
     $("#div1").append(123); 
 

 
     } 
 
    }); 
 
    }); 
 
</script>

+0

讓我來試試,看看它的工作原理 – letsworktogether

+0

哪裏,我會添加此代碼。 ($(window).scrollTop()== $(document).height() - $(window).height()&& x == 24){ – letsworktogether

+0

@letsworktogether查看更新後的帖子,使用' $ .Callbacks(「once」)' – guest271314

0

我有一個簡單但不太優雅的解決方案,你可以在你的函數執行代碼前加功能之前boolean flagcheckboolean state。第一次調用函數後,請更改爲boolean state,這樣可以防止再次調用該函數。例如:

<script> 
    var called = false; 

    function myFunc(){ 
    if (!called){ 
     //your code here 
     called = !called; 
    } 
    } 
</script> 

它不會是最好的答案在那裏,但還是,希望它有助於=)