2013-01-11 4 views
2

나는 실험하고 있으며 이것에 관해 가장 좋은 방법을 찾고 있습니다. 여러 개의 드롭 다운 메뉴가 있습니다. 열려있는 다른 메뉴를 확인하고 닫은 다음 클릭 한 메뉴에서 애니메이션을 실행하거나 이미 열려있는 경우 클릭 한 메뉴를 닫으려고합니다. 여기까지 내가 지금까지 가지고있는 것이있다.열기 메뉴 열기 다른 메뉴로 애니메이션하기 전에

$('ul.primary li').click(function(event) { 
      if ($(this).children('ul.drop').is(':visible')) { 
       $(this).children('ul.drop').slideUp(function() { 
        $(this).parent('li').removeClass('active'); 
       }); 
      } 
      else if ($(this).siblings().children('ul.drop').is(':visible')) { 
         $(this).siblings().children('ul.drop').slideUp(function() { 
          $(this).parent('li').removeClass('active'); 
         }); 
         $(this).children('ul.drop').slideDown(function() { 
          $(this).parent('li').addClass('active'); 
         }); 
      } 
      else { 
       $(this).children('ul.drop').slideDown(function() { 
        $(this).parent('li').addClass('active'); 
       }); 
      } 
     }); 

편집 : 나는 열린 애니메이션 드롭 다운 클릭하기 전에 열려있는 드롭 다운 애니메이션을 폐쇄하는 방법을 알아낼 수 없습니다. JsFiddle : http://jsfiddle.net/JG9dB/

+0

무엇이 당신의 질문입니다. 코드 검토를 원할 경우 http://codereview.stackexchange.com을 시도하십시오. –

+0

마크 업과 함께 바이올린을 설정할 수 있습니까? 우리가 함께 작업하고 시각화하는 것이 더 쉬울 것입니다. –

+0

설명이 부족해서 죄송합니다. 문제는 다음 메뉴가 열리기 전에 열려있는 메뉴를 닫는 방법을 알아낼 수 없다는 것입니다. JsFiddle : http://jsfiddle.net/JG9dB/ –

답변

1

그것에 대해 갈 것이라고하는 방법이 있습니다 ....

JAVASCRIPT :

$('ul.primary>li').click(function(event) { 
    var li = $(this); 
    var liOld = $('ul.active').parents("li"); 

    if($('ul.active').length!=0){ 
     $('ul.active').removeClass('active').slideUp('slow', function(){ 
     if(li.index() != liOld.index()){ 
      li.children('ul.drop').slideDown('slow').addClass('active'); 
     } 
     }); 
    } 
    else{ 
    $(this).children('ul.drop').slideDown('slow').addClass('active'); 
    } 
}); 

DEMO :이 문제를 처리해야 http://jsfiddle.net/JG9dB/35/

. 다른 질문이 있으면 알려주세요.

+0

잘 작동합니다! 이것을 느리게하는 방법이 더 명백해 지나요? 이것과 비슷한 것 : http://www.knapheide.com/ –

+0

그래, 당연하지! 슬라이드/슬 라이드 다운 기능에서 '빠른'/ '중간'을 숫자로 바꿀 수 있습니다. 이 옵션은 지속 시간이며 애니메이션 길이 (밀리 초)를 제어합니다. 또한 원래 게시물의 변경 사항을 참조하십시오. 희망이 도움이! – Dom

+0

나는 그 시도를 천천히 시도했지만, 다른 메뉴가 열릴 때 하나의 메뉴가 닫히고 다음 이벤트를 열기 위해 이벤트를 시작하기 전에 닫히는 것처럼 보입니다. 나는 무엇을 성취하려고 하는가. –