我的无限滚动会在Safari中附加两次并复制

时间:2016-08-13 19:39:58

标签: javascript jquery wordpress safari

我对Safari的无限滚动有问题。 他跑两次并复制。 这是我的代码:

    $window.scroll(function(){

    if (($document.height() - $window.height()) == $window.scrollTop()) {
        $('#loading-more svg').show();

        jQuery.post(
            ajaxurl,
            {
                'action': 'load_more',
                'offset': offset
            },
            function(response){
                $('#loading-more svg').hide();
                $('.load-more').append(response);
                if (response) {
                    offset = offset + 4;
                }
            }
        );
    }
});

你有解决方案吗?

非常感谢你!

2 个答案:

答案 0 :(得分:0)

试试这个

var scrolled = true;
$window.scroll(function(){

    if ( scroll == true; ) {
        scrolled = false;
        if (($document.height() - $window.height()) == $window.scrollTop()) {
            $('#loading-more svg').show();

            jQuery.post(
                ajaxurl,
                {
                    'action': 'load_more',
                    'offset': offset
                },
                function(response){
                    $('#loading-more svg').hide();
                    $('.load-more').append(response);
                    if (response) {
                        offset = offset + 4;
                        scrolled = true;
                    }
                }
            );
        }
    }
});

答案 1 :(得分:0)

取消绑定特定的滚动事件,直到您的延迟操作完成,以防止累积更多的事件触发器,从而在您的情况下创建重复行为。

$window.scroll(myEventFn);
function myEventFn() {
    if (($document.height() - $window.height()) == $window.scrollTop()) {
        $window.unbind("unbind", myEventFn); //unbind specific event
        $('#loading-more svg').show();

        jQuery.post(
            ajaxurl, {
                'action': 'load_more',
                'offset': offset
            },
            function(response) {
                $('#loading-more svg').hide();
                $window.scroll(myEventFn); //bind back the event
                $('.load-more').append(response);
                if (response) {
                    offset = offset + 4;
                }
            }
        );
    }
}