2010-03-29 54 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 2010-03-29 14:19:04

+0

的HTML添加到原来的q。 – Cameron 2010-03-29 14:24:12

回答

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 2010-03-29 14:08:44

+0

更新了修复答案,在点击处理程序中使用了错误的缓存$(this) – PetersenDidIt 2010-03-29 14:22:42

+0

仍然无法正常工作。 – Cameron 2010-03-29 14:27:01