2014-08-27 3 views
1

저는 현재 3 개의 div가 있으며 3 개 이상일 수 있습니다. 모든 div에는 하나의 앵커 태그가 있으며 앵커 태그에는 클릭 기능이있어서 UL을 동일한 부모 내에서 열 수 있습니다. 내가 원하는 것은 UL을 열고 다른 하나에 영향을 미치지 않고 닫을 수 있다는 것입니다. oops 개념으로 기능을 만들었지 만 원하는대로 작동하지 않습니다. 다음 앵커 태그를 두 번 클릭합니다. oops 논리로 수행 할 수 있습니까? 그렇지 않으면 다른 방법을 선택해야합니다. fiddle값을 저장하고 자바 스크립트에서 다시 사용하십시오 oops

$(function(){ 

    function get(){ 
     this.a=1; 
     this.show= function(a){  
      $(this).parent().find('ul').slideDown() 
     }; 
     this.hide= function(a){ 
      $(this).parent().find('ul').slideUp() 
     } 
    } 

    var n= new get(); 
    $('a').click(function(){ 
     if(n.a){ 
      n.show.call(this) 
      n.a=0; 
     } 
     else{ 
      n.hide.call(this) 
      n.a=1; 
     } 
    }); 

}); 
+1

바이올린 링크가 비어 있습니다. –

+0

JSFiddle 링크가 JSFiddle 사이트로 이동하거나이 코드를보기 위해 바이올린을 설정했음을 의미합니까? – ryanpitts1

+0

http://jsfiddle.net/2kbbgvts/ – Carlos

답변

1

당신은 정확하게 당신이 원하는 것을 할 수 있습니다

$('a').click(function(){ 
    $(this).parent().find('ul').slideToggle() 
}); 

바이올린 : http://jsfiddle.net/2kbbgvts/1/

편집 : 또한 는이 방법을 수행하는 한 가지 방법은 당신이 그것을하려고했던 종결 예정 :

$('a').each(function(){ 
    var anchor = $(this); 
    var shown = false; 
    function toggle(){ 
     if(shown) anchor.parent().find('ul').slideUp() 
     else $(this).parent().find('ul').slideDown() 
     shown = !shown; 
    } 
    anchor.click(toggle); 
}); 

그냥 을 증명하는 것입니다 어떻게 이런 일을 할 수 있습니다. 이 경우 slideToggle과 fadeToggle을 사용하는 것이 훨씬 간단합니다. http://jsfiddle.net/2kbbgvts/2/

+0

질문에 대답 해 주셔서 감사합니다, 우리는 fadeIn과 fadeOut 대신 slideToggle을 사용할 때 답변이 잘 작동하지만, 우리는 그것을 관리합니다. – Carlos

+0

이것은 감사합니다. 나는 그것을 할 수있는 방법. 또는 ($ ('a') 대신 function() {'click (function() {'첫 번째 줄은 단지 개인 선호) – ryanpitts1

+0

For 페이드를 토글하는 것은'slideToggle'을'fadeToggle'로 바꾸는 것입니다 : http://api.jquery.com/category/effects/ – ryanpitts1

관련 문제