2010-03-29 6 views
0

나는 다음과 같은 코드가 있습니다jQuery를 전환 도움말

$(document).ready(function() { 


    // Manage sidebar category display 
    jQuery("#categories > ul > li.cat-item").each(function(){ 
    var item; 
    if (jQuery(this).has("ul").length) { 
     item = jQuery("<span class='plus'>+</span>").click(function(e){ 
     jQuery(this) 
      .text(jQuery(this).text() === "+" ? "-" : "+") 
      .parent().next().toggle(); 
     return false; 
     }); 

     jQuery(this).find(".children").hide(); 
    } else { 
     item = jQuery("<span class='plus'>&nbsp;</span>"); 
    } 

    jQuery(this).children("a").prepend(item); 
    }); 

}); 

이 내 범주에 대한 토글 시스템의 종류를 만듭니다. 그러나 그것은 2 단계 깊이에서만 작동 할 것이며, 무한한 수준의 작업이 필요합니다.

html로 :

<li id="categories"> 
    <ul> 
     <li class="cat-item"><a href="#">Link</a> 
      <ul> 
       <li class="cat-item"><a href="#">Link</a></li> 
       <li class="cat-item"><a href="#">Link</a></li> 
       <li class="cat-item"><a href="#">Link</a></li> 
       <li class="cat-item"><a href="#">Link</a></li> 
      </ul> 
     </li> 
     <li class="cat-item"><a href="#">Link</a> 
      <ul> 
       <li class="cat-item"><a href="#">Link</a></li> 
       <li class="cat-item"><a href="#">Link</a></li> 
       <li class="cat-item"><a href="#">Link</a></li> 
       <li class="cat-item"><a href="#">Link</a> 
        <ul> 
         <li class="cat-item"><a href="#">Link</a></li> 
         <li class="cat-item"><a href="#">Link</a></li> 
         <li class="cat-item"><a href="#">Link</a></li> 
         <li class="cat-item"><a href="#">Link</a></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</li> 
+0

당신이 범주 – PetersenDidIt

+0

에 대한 HTML을 제공 할 수 원본 q에 추가됨. – Cameron

답변

0

귀하의 최고 선택 특정하는 것입니다

jQuery("#categories li.cat-item").each(function(){ 
    var item = jQuery("<span>").addClass('plus'), 
     that = jQuery(this); 

    if (that.has("ul").length) { 
     item.click(function(e){ 
      var self = jQuery(this); 
      self.text(self.text() === "+" ? "-" : "+") 
       .parent().next().toggle(); 
      e.preventDefault(); 
     }).text('+'); 

     that.find(".children").hide(); 
    } 

    that.children("a").prepend(item); 
}); 

가 나는 또한 $를 캐시로 변경 (이)

+0

+ 및 - 아이콘이 더 이상 나타나지 않고 목록을 전환 할 수 없습니다. – Cameron

+0

클릭 처리기에서 캐시 된 $ (this)을 잘못 사용하도록 수정되었습니다. – PetersenDidIt

+0

여전히 작동하지 않습니다. – Cameron

관련 문제