2013-03-20 1 views
2

다음 코드를 사용하려고합니다.Jquery, 왜 애니메이션 높이가 예상대로 작동하지 않는지 확실하지 않습니다.

사용자가 포인트 x로 스크롤하면 메뉴 래퍼의 높이가 줄어 듭니다. .extender를 클릭하여 높이를 복원 할 수 있습니다. 이 링크를 클릭하면 링크가 사라집니다 (따라서 토글 기능은 없습니다).

이 토글은 유사한 사용 사례에서 해결되는 경향이 있으며,이 문제를 해결하는 방법을 알고 싶습니다. 왜 내가 가지고있는 코드가 작동하지 않는지 궁금합니다.

$(document).scroll(function(){ 
    var height = $('div#zone-menu-wrapper').height(); 
    if (some_logic){ 
     $('div#zone-branding-wrapper').animate({height: 10}, 1500); 
    } 
}); 

$('.extender').click(function(){ 
    $('div#zone-branding-wrapper').animate({height: 380}, 1500); 
    return false; 
}); 
+1

코드의 역할에 대해 설명해 주셨습니다. 뭐가 문제 야? – isherwood

+1

애니메이션 전에 jquery stop을 사용해야합니다. 스크롤은 각 픽셀마다 변경됩니다. – Anoop

+0

안녕하세요, 문제는 확장기를 클릭하면 높이 애니메이션이 실행되지 않고 동일한 높이가 유지된다는 것입니다. – rix

답변

1

애니메이션이 이미 진행 중이면 반환됩니다.

var inProgress = false; 
$(document).scroll(function(){ 
    if(inProgress)return; 
    var height = $('div#zone-menu-wrapper').height(); 
    if (some_logic){ 
     inProgress = true; 
     $('div#zone-branding-wrapper').animate({height: 10}, 1500, function(){ 
        inProgress = false; 
     }); 
    } 
}); 

$('.extender').click(function(){ 
    $('div#zone-branding-wrapper').animate({height: 380}, 1500); 
    return false; 
}); 
+0

팁 주셔서 감사합니다. 애니메이션 높이가 한 번만 호출되도록 답변을 약간 수정했습니다. 나는 문제가 그것이 한 번 이상 부름 받았지만 당신의 대답이 나를 그것에 붙이므로 포인트를 얻게된다고 생각합니다. – rix

관련 문제