0

我正在加载 facebook likebox onscroll。但每次我向上/向下滚动时,ajax 都会被触发。我希望 ajax 只触发一次。这是我的代码:

jQuery(document).ready(function() {
    jQuery(window).scroll(function() { 
        var scroll = jQuery(window).scrollTop();

        if (scroll <= 770) {
      jQuery.get('ajax/facebook.html', function(data) { jQuery('.fblikeajax').html(data);});
        }

    }); 
}); 
4

3 回答 3

4

使用 JQueryon()off()

$(document).on("scroll", scrollcheck);

var scrollcheck = function () {
    var scroll = jQuery(window).scrollTop();
    if (scroll <= 770) {
        jQuery.get('ajax/facebook.html', function (data) {
            jQuery('.fblikeajax').html(data);
        });
        $(document).off("scroll", scrollcheck);
    }
}
于 2013-07-05T18:50:05.973 回答
1

您可以添加一个变量来检查 ajax 是否已被触发:

jQuery(document).ready(function() {
    var ajax_fired = false;
    jQuery(window).scroll(function() { 
        var scroll = jQuery(window).scrollTop();

        if ((scroll <= 770) && !ajax_fired) {
            ajax_fired = true;
            jQuery.get('ajax/facebook.html', function(data) {
                jQuery('.fblikeajax').html(data);

            });
        }

    }); 
}); 
于 2013-07-05T18:49:06.307 回答
0

触发后取消绑定事件侦听器:

jQuery(document).ready(function() {
    var scrollHandler = function() { 
        var scroll = jQuery(window).scrollTop();

        if (scroll <= 770) {
      jQuery.get('ajax/facebook.html', function(data) { jQuery('.fblikeajax').html(data);});
        }
        $(window).unbind('scroll', scrollHandler);
    }
    jQuery(window).scroll(scrollHandler); 
}); 

我还没有测试过该代码,但它应该非常接近。

于 2013-07-05T18:47:04.937 回答