仅执行一次ajax调用

时间:2013-07-05 18:42:58

标签: jquery ajax

我正在加载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);});
        }

    }); 
}); 

3 个答案:

答案 0 :(得分:4)

使用JQuery的on()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);
    }
}

答案 1 :(得分: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);

            });
        }

    }); 
}); 

答案 2 :(得分: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); 
}); 

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