2014-03-28 3 views
0

기본적으로 나는 클릭하는 li과 "category div"에 모두 "active"라는 클래스를 추가하고 싶습니다. 이 경우 id는 "vadarmindfulness"인 div입니다. 내 코드는 작동한다고 생각했지만 그렇지 않습니다.jQuery에서 .parent()를 사용한 이상한 결과

JQuery와 코드 :

$('.downdrop li').click(function() { 
    var currentId = $(this).attr('id'); 

    $('.info-title').hide().load('content.html' + " #" + currentId + "-title").fadeIn(400); 
    $('.info-text').hide().load('content.html' + " #" + currentId + "-text").fadeIn(400); 

    $(this).addClass('active'); 
    alert($(this).parent().parent().next().addClass('active')); 
}); 

HTML 코드 :

<ul id="dropdown"> 
        <li class="twolines"><div id="vadarmindfulness" class="active">Vad är mindfulness</div> 
         <ul class="downdrop"> 
          <li id="hurserprogrammetut"><a href="#">Hur ser programmet ut</a></li> 
          <li id="effekterochbiverkningar">Effekter och ev. biverkningar</li> 
          <li id="evidens">Evidens</li> 
          <li id="sammanfattning">Sammanfattning av forskning</li> 
          <li id="egenforskning">Vår egen forskning</li> 
         </ul> 
        </li> 
+3

커뮤니티에서 진지하게 생각하고 싶다면 게시물에 저주를 사용하지 마십시오. – programstinator

+0

나는 당신의 제목에 말했고 영어 사용에 상관없이 진지하게 받아 들였습니다. – CodingIntrigue

+0

여기에 '카테고리 div'가 표시되지 않습니다. 전체 코드를 추가 할 수 있습니까? –

답변

2

은보고를 얻을 수 있습니다이 무엇을 당신이 원하는 무엇

$(this).parent().parent().next().addClass('active') 

HTML

<ul id="dropdown"> 
    <li class="twolines"> <!-- 2nd parent --> 
     <div id="vadarmindfulness">Vad är mindfulness</div> 
     <ul class="downdrop"> <!-- first parent --> 
      <li id="hurserprogrammetut"><a href="#">Hur ser programmet ut</a></li> 
      <li id="effekterochbiverkningar">Effekter och ev. biverkningar</li> 
      <li id="evidens">Evidens</li> 
      <li id="sammanfattning">Sammanfattning av forskning</li> 
      <li id="egenforskning">Vår egen forskning</li> <!-- clicked --> 
     </ul> 
    </li> 
    <!-- next() goes here/there is no next becuase it gets the next element after 2nd parent (not the element inside the 2nd parent!) --> 
</ul> 

$(this).parent().prev().addClass('active'); 

HTML

<ul id="dropdown"> 
    <li class="twolines"> 
     <div id="vadarmindfulness">Vad är mindfulness</div> <!-- previous element of 1st parent --> 
     <ul class="downdrop"> <!-- first parent --> 
      <li id="hurserprogrammetut"><a href="#">Hur ser programmet ut</a></li> 
      <li id="effekterochbiverkningar">Effekter och ev. biverkningar</li> 
      <li id="evidens">Evidens</li> 
      <li id="sammanfattning">Sammanfattning av forskning</li> 
      <li id="egenforskning">Vår egen forskning</li> <!-- clicked --> 
     </ul> 
    </li> 
</ul> 
1

사용 .closest('selector') 대신 .parent().parent().

참조 : http://api.jquery.com/closest/

편집 : 당신이 잘못 .next()를 사용하는 것처럼 또한, 그것은 보인다. 첫 번째 요소는 첫 번째 요소가 아니라 그 요소를 호출 한 요소 다음에 선택합니다. 어떤 자식을 얻으려면 $('div', someParentElement)을 사용하고, 첫 번째 값을 얻으려면 .children().first()을 사용할 수 있습니다.

0

active 클래스를 해당 div에 명시 적으로 설정하는 Heres의 작업 fiddle. 원하는 내용이 아닌 경우 next() 대신 $(this).parent().prev().addClass('active')을 사용하면됩니다.