2011-02-04 102 views
1

我遇到了我的代码问题。这不是问题。有特色才是好事。目前如果你去http://jsfiddle.net/6yuuu/并点击其中一个链接,所以如果这个链接有儿童链接,那么它显示父母(所有级别)下的所有链接。Jquery帮助匹配

这是因为我使用的字符串

if($href_sub.toLowerCase().indexOf($href.toLowerCase()) >= 0) 
     { 
     $(this).css("display", "block"); 
     } 

我如何写函数,只显示了一个水平下降在时间的beggining匹配。 (所以当我点击“Reding GLE's”时,它只显示:“1.2.1”,“1.4.2”,“2.2.1”,“2.4.1”,“2.4.2”,“2.6.1”我点击其中的一个链接它显示的元素的下一个孩子。

它可能需要一些正则表达式匹配?

感谢您的帮助。

+3

好像你过于简单的事情。 – yoda 2011-02-04 18:06:56

回答

4

你的HTML似乎是你想要什么无效做你的ul元素应该彼此嵌套宁可写         

<ul> 
    <li><a /></li> 
    <li><a /> 
     <ul> 
      <li><a /></li> 
      <li><a /></li> 
      <li><a /> 
       <ul> 
        <li><a /></li> 

这将使您的jQuery的是更为简单的

$("#taxonomylist a").click(function(e) { 
    e.preventDefault(); 
    $(this).next("ul").children().slideToggle(); 
}); 

我也知道有些时候改变事物是不是一种选择。这里是你将如何使用你所拥有的做到这一点:

$('#taxonomylist ul li a').click(function(e) { 
    e.preventDefault(); 
    var url = $(this).attr("href"); 
    var count = url.split("/").length; 
    $("#taxonomylist ul li a[href^='" + url + "']").each(function() { 
     var $href_sub = $(this).attr("href"); 
     if(count + 1 == $href_sub.split("/").length) 
     { 
      $(this).parent().css("display", "block"); 
     } 
    }); 
}); 

这使得假设一切1水平较低将有1更多/

工作示例:http://jsfiddle.net/6yuuu/3/

+0

完全是我的一天。我真的认为我无法更改html,因为它是由一些crzy php生成的,因此它可以很好地处理这个html标记更改。非常感谢。 – user194076 2011-02-04 18:52:04