您好我有一个关于jquery窗口滚动功能的问题。我有这样的代码。
stripped1 = stripped1.replaceAll("(\\.[0-9]*[1-9])0+$","$1");
stripped1 = stripped1.replaceAll("\\.0$","");
确定每次滚动时如果第一次为真,则调用每个1px滚动窗口。这种方式只调用一次如果是真的,但检查滚动,如果其他是真的只调用一次?
感谢您的回答:)
答案 0 :(得分:4)
尝试使用这样的标志:
var paused = false;
$(window).scroll(function(){
if( $(window).scrollTop() > $(".pages").offset().top ) {
if( !paused ){
$('.top-slider').slick('slickPause');
paused = true;
}
}else {
if( paused ){
$('.top-slider').slick('slickPlay');
paused = false;
}
}
});
答案 1 :(得分:2)
添加测试变量将是一个解决方案:
var checkDown = true;
var checkUp = false;
$(window).scroll(function(){
if($(window).scrollTop() > $(".pages").offset().top && checkDown ) {
$('.top-slider').slick('slickPause');
checkDown = false;
checkUp = true;
}else if(checkUp) {
$('.top-slider').slick('slickPlay');
checkDown = true;
checkUp = false;
}
});
答案 2 :(得分:1)
我告诉你另一个解决方案,是一个辩护者。去抖动功能使滚动和调整事件的效率更高,因为停止事件触发直到第一个被触发事件结束。
您可以使用underscore.js库查看去抖功能。
http://underscorejs.org/#debounce
使用很简单:
var debounced = _.debounce(myFunction, 1000);
$(window).scroll(debounced);