2012-05-01 2 views
1

jquery :animated 선택기에서 문제가 발생했습니다. jquery animate 함수의 콜백 함수를 사용하여 애니메이션이 끝난 후 ajax 페이지를 호출하지만 문제가 있습니다. : 아약스를 통한 호출 페이지는 두 번 호출됩니다!.is (": animated") selector는 애니메이션 중에 true를 반환하고 두 번 호출합니다

$('#elemId').click(function(){ 
$('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){ 
     $('#sections_display').load('page.php'); 
}); 
}); 

결과 "page.php가 두 번로드됩니다!"라는 오류 메시지가 표시됩니다.

그래서 나는 시도 :

$('#elemId').click(function(){ 
     $('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500); 
}); 

if ($('html,body').is(":animated")) { 
    $('#sections_display').load('page.php'); 
} 

문제 if ($('html,body').is(":animated"))은 항상 페이지의 애니메이션 동안 true를 반환하지만 난 애니메이션이 끝난 후 true를 반환 할 수 있습니다.

또한 내가 시도 :

$('#elemId').click(function(){ 
$('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){ 
    if ($(this).is(":animated")) { 
     $('#sections_display').load('page.php'); 
    } 
}); 
}); 

결과 "page.php 두번 번 로딩된다."

답변

2

결과 "page.php가 방화 광에서 두 번로드되었습니다."

이벤트를 htmlbody에 모두 첨부했기 때문입니다. 단지 html보십시오 :

$('#elemId').click(function(){ 
    $('html').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){ 
      $('#sections_display').load('page.php'); 
    }); 
}); 
+0

그것은 : 일, 당신이 기꺼이 도와 아무 문제가 – semsem

+1

없습니다 감사드립니다. –

관련 문제