如何在jQuery中使用滚动函数调用一次函数?

时间:2014-07-09 14:38:22

标签: javascript jquery function javascript-events scroll

我的.viewPort区域包含带滚动的larg元素。

并创建一些像流动代码的功能:

jQuery的:

$('.part').each(function(){
    if( $(this).is(':in-viewport') ){
        var partID = $(this).attr('id');
        if($('.part #content-id-'+(partID)+').length < 1) {
            partLoader(partID);
        }                       
    }
});

function partLoader(id) {
    // do some ajax actions
    //$.ajax({....});
    console.log('done');
}

当我滚动时,我在console.log中获得了很多done,浏览器崩溃了!!!

我知道这是因为滚动事件发送给服务器的partLoader()太多了!

所以......如何通过滚动来调用partLoader一次?

1 个答案:

答案 0 :(得分:1)

  1. 考虑不做$('.part').each()而是$('.part').last()(无论是否有效将取决于您网站的结构,因此我无法确定。)
  2. 谨慎使用.part,因此产生的请求更少。
  3. 使用更好的if语句来过滤掉更多不需要更新的.part元素。
  4. 使用debouncer ...
  5. 我不认为4是必要的,因为它看起来像是一个结构问题,你如何调用AJAX(来自每个.part元素而不是那些需要它的元素 - 但我不能提供更多建议,但不知道更多关于结构的信息),但它会限制AJAX调用的数量。