2013-07-05 5 views
0

페이 스북 Likebox onscroll을로드 중입니다. 하지만 위아래로 스크롤 할 때마다 아약스가 해고되고 있습니다. 나는 아약스가 한 번만 발사되기를 바란다. 이 화재 후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);}); 
     } 

    }); 
}); 
+0

보기 : http://stackoverflow.com/ 질문/9758527/jquery-callback-on-end-of-page-scroll – krishgopinath

답변

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); 
    } 
} 
+0

lovely! 해결책을 가져 주셔서 감사합니다. – Towfiq

+0

왜 .one을 사용하지 않습니까? – Towfiq

+0

'one'은 한번만 발동 할 것이지만 그것은 당신의'if' 문장이 통과한다는 것을 의미하지는 않습니다. 클릭 이벤트 등의 경우 'one'을 사용할 수 있습니다. – Jonathan

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); 
}); 

내가 그 코드를 테스트하지 않은,하지만 꽤 가까워 야합니다.

1

아약스 해고 된 경우는 확인 변수에 추가 할 수 있습니다 :이 예에서

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

      }); 
     } 

    }); 
}); 
+0

이것은 첫 번째 응답이 수신되고'ajax_fired' 플래그가 변경 될 때까지 요청을 실행시킬 가능성이 있습니다. – Jasen

+0

당신 말이 맞아요. 이 문제를 해결하기위한 답을 수정하십시오 –

관련 문제