2011-02-04 4 views
1

私のコードに問題があります。それは問題ではありません。それは機能を持っているだけでいいです。現在http://jsfiddle.net/6yuuu/に行き、リンクの1つをクリックすると、このリンクに子リンクがある場合は、親(すべてのレベル)の下にあるすべてのリンクが表示されます。私は、文字列のbegginingからマッチング使用しているためマッチングに関するJqueryヘルプ

これは

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

は、どのように私は一度に1レベル下示している関数を書くんです。 (「Reding GLE」をクリックすると、「1.2.1」、「1.4.2」、「2.2.1」、「2.4.1」、「2.4.2」、「2.6.1」、および「私が要素の次の子供を示し、それらのリンクのいずれかをクリックしてください。

をそれはおそらく、いくつかの正規表現のマッチングが必要になりますか?あなたの助けを

感謝を。

+3

に思えます単純なものを過度に複雑にする。 – yoda

答えて

4

あなたのHTMLは、あなたがしようとしている何のために無効と思われますあなたのul要素が互いに内にネストされなければならない。やるということへの書き込み         

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

は、私はいくつかの回は、物事を変更するオプションではありませんことを実現しますはるかに簡単な

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

というあなたのjQueryになるだろう。これは、下のすべて1レベルが1以上/

作業例を持っていることを前提になる

$('#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"); 
     } 
    }); 
}); 

:ここではあなたが持っているものを使用してこれを行うだろうかであるあなたがいるようhttp://jsfiddle.net/6yuuu/3/

+0

完全に私の一日を作った。私は本当にhtmlを変更できないと思っていました。なぜなら、これはhtmlのマークアップの変更でうまく動作するので、いくつかのcrzy phpによって生成されたものです。どうもありがとう。 – user194076