2012-05-02 2 views
2

나는 아코디언에 대한 많은 스크립트를 인터넷에서 보았지만 내 요구 사항을 충족시키는 것은 찾지 못했습니다. Facebook에서 사용하는 것과 같은 아코디언 용 플러그인을 만들고 싶습니다. 다음과 같이 작동해야합니다.jQuery 아코디언 플러그인 (Facebook 또는 Google과 같은)

  1. 클릭하여 열고 닫으십시오.
  2. 열린 상태에서 스타일 클래스를 추가하십시오.
  3. 외부 클릭으로 닫음. 클릭 이벤트가 아코디언 상자 안에 있으면 닫아서는 안됩니다.

이것을 달성 할 방법이 있습니까? 알고 계시면 도와주세요. jQuery를 처음 사용합니다 ...

미리 감사드립니다.

+1

Google에서 'jQuery'및 'accordion'을 사용해보십시오. 시작을 위해 수백 가지 예제가 있어야합니다. –

답변

2

15 줄의 코드로 해결할 수있는 플러그인이 필요하지 않습니다. 이는 특정 DOM 요소 및 setTimeout을 사용하여 창에서 트리거하는 클릭 이벤트의 순서를 변경하는 것입니다.

var ShowingAccordion = false; 

$(document).ready(function() { 

     $('.MyAccordionOpener').click(function() { 

      if ($(this).next('.MyAccordion').is(':visible') === false) { 

       ShowingAccordion = false; 
       $('.MyAccordion').hide(500); 
       $(this).next('.MyAccordion').addClass('SomeClass'); 
       $(this).next('.MyAccordion').show(500); 
       setTimeout(function() { ShowingAccordion = true; }, 1); 
      } 
     }); 

     $('.MyAccordion').click(function() { 

      ShowingAccordion = false; 
      //this is the line that solves your problem 
      setTimeout(function() { ShowingAccordion = true; }, 1); 
     }); 


     $(document).click(function() { 

      if (ShowingAccordion === true) {  

       $('.MyAccordion').hide(500); 
       ShowingAccordion = false; 
      }  
     }); 
}); 

그리고 여기에는 년대 demo

당신이 당신이 대답 및 코딩 행복을 받아 들일 수 다음 필요한 않는 경우!

+0

실제로, 나는 내 웹 사이트에 많은 드롭 다운을 가지고 있으며 플러그인을 만들 필요가 있으므로 각 드롭 다운마다 별도의 스크립트를 작성하는 것은 좋지 않다고 생각합니다. 방금이 트위터 부트 스트랩 스크립트를 보았지만 원하는 방식으로 작동하지 않아서 필요에 따라 편집하기가 힘듭니다. –

+0

그럼 클래스로 작업하여 적응할 수 있습니다! 플러그인은 작동하는 코드와 동일합니다. 어느 것이 든 당신이 이해할 수없는 코드를 복사하여 붙여 넣거나, 당신의 특정 요구 (즉 당신의 현재 상황)를 위해 수정하기가 어렵거나 당신 자신의 코드를 만들 수 있습니다. 클래스와 함께 작동하도록 변경했습니다. 편집 및 샘플 jfiddle를 참조하십시오. – frenchie

+0

참고로 jquery를 사용하여 setTimeout 행을 대체하려는 경우 찾고있는 jquery 함수는 .proxy()입니다. 그러나 15 줄의 코드가 무엇을하는지 이해하려고하면 괜찮을 것입니다. – frenchie

관련 문제