2011-02-04 81 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