我试图在滚动加载上运行更多,但我希望它只运行一次。每次滚动到达页面底部时,下面的代码都会继续运行。 我需要在代码中添加一些东西
if ($(window).scrollTop() == $(document).height() - $(window).height() && x==24 ){
但我不知道要添加什么来使它只运行一次,以防止代码运行多次。
<script>
if ($(window).scrollTop() == $(document).height() - $(window).height() && x==24 ){
});
});
</script>
基本上我的问题是如何防止javascript多次运行。
答案 0 :(得分:1)
如果仅需要scroll
事件来调用该函数一次,则可以使用scroll
语句中的$(window)
从.off()
中删除if
事件
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>
答案 1 :(得分:0)
我有一个简单但不太优雅的解决方案,您可以在函数前添加boolean flag
,在函数中执行代码之前check
boolean state
。boolean state
在第一次调用函数后更改为欲望<script>
var called = false;
function myFunc(){
if (!called){
//your code here
called = !called;
}
}
</script>
,以便可以防止再次调用它。例如:
conditional aggregation
这不是最好的答案,但仍然希望它有帮助=)