jqueryscroll多次调用函数
我有一个jquery滚动功能,如下所示:jqueryscroll多次调用函数,jquery,scroll,window,Jquery,Scroll,Window,我有一个jquery滚动功能,如下所示: $(window).scroll(function() { if (($(window).scrollTop() + $(window).height()) >= ($('body').height() * 0.7)) { alert('call me'); } }); 以及HTML: <div style="height:450px;">BOX</div> 框 当我滚动时,我得到的不是一次呼
$(window).scroll(function() {
if (($(window).scrollTop() + $(window).height()) >= ($('body').height() * 0.7)) {
alert('call me');
}
});
以及HTML:
<div style="height:450px;">BOX</div>
框
当我滚动时,我得到的不是一次呼叫我
而是多次呼叫我
。为什么会这样?出了什么问题?
可能还有其他方法可以做到这一点,但您可以在调用CSS类后设置它,然后在尝试再次调用它之前检查该类是否存在。。。大概是这样的:
function callfunction()
{
if (($(window).scrollTop() + $(window).height()) >= ($('body').height() * 0.7)) {
$('body').addClass('called');
alert('call me');
}
}
$(document).scroll(function () {
if(!$('body').hasClass('called'))
{
callfunction();
}
}
可能还有其他方法可以做到这一点,但您可以在调用CSS类后设置它,然后在尝试再次调用它之前检查该类是否存在。。。大概是这样的:
function callfunction()
{
if (($(window).scrollTop() + $(window).height()) >= ($('body').height() * 0.7)) {
$('body').addClass('called');
alert('call me');
}
}
$(document).scroll(function () {
if(!$('body').hasClass('called'))
{
callfunction();
}
}
这是一个特性,不是一个bug,在每次滚动事件发生时接收它是正常的,每次滚动条中元素的位置改变时滚动事件都会启动 如果不需要,可以添加标志、类或超时来避免它 例如,对于超时,您可以这样做: JS: 小提琴在这里:
这是一项功能,不是一个bug,每次滚动事件发生时都会收到它是正常的,每次滚动条中某个元素的位置发生变化时都会启动滚动事件 如果不需要,可以添加标志、类或超时来避免它 例如,对于超时,您可以这样做: JS: 小提琴在这里:
计时器不好,它会产生大量编程开销。。。添加类也会使代码变慢。您正在绑定一个函数,并在用户每次滚动时检查一个参数。那是对资源的巨大浪费 如果要在用户上调用函数一次,请在第一次调用时滚动解除绑定该函数:
function callfunction(){
$(window).unbind("scroll");
//*... do the rest of your programming here
}
计时器不好,它会产生大量的编程开销。。。添加类也会使代码变慢。您正在绑定一个函数,并在用户每次滚动时检查一个参数。那是对资源的巨大浪费 如果要在用户上调用函数一次,请在第一次调用时滚动解除绑定该函数:
function callfunction(){
$(window).unbind("scroll");
//*... do the rest of your programming here
}
Stackoverflow上有一个很好且干净的(er)解决方案
Stackoverflow上有一个很好且干净的(er)解决方案
我想知道为什么没有人投票支持这个,这似乎是正确和有效的方式。谢谢我想知道为什么没有人投票支持这个,这似乎是正确和有效的方式。谢谢简言之,这实际上是使用去BounceYes,这是一种谴责机制简言之,这实际上是使用去BounceYes,这是一种谴责机制