Jquery窗口滚动。只打电话一次

时间:2015-07-30 07:02:39

标签: javascript jquery call window-scroll

您好我有一个关于jquery窗口滚动功能的问题。我有这样的代码。

stripped1 = stripped1.replaceAll("(\\.[0-9]*[1-9])0+$","$1");
stripped1 = stripped1.replaceAll("\\.0$","");

确定每次滚动时如果第一次为真,则调用每个1px滚动窗口。这种方式只调用一次如果是真的,但检查滚动,如果其他是真的只调用一次?

感谢您的回答:)

3 个答案:

答案 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);