2011-01-28 7 views
0

私はul要素を使って作成したツリーを走査しようとしています。私はこれが適切なセレクタを使用してより簡単に行うことができることを認識していますが、私はこれを行う再帰関数を作成したいと思います。リストをナビゲートするための再帰的なJQuery関数

アイデアは、リストをオンにし、各リストの最初の項目をハイライトするためにli:first-child要素に 'on'クラスを追加しながら、ツリーを下に移動してすべてのサブリストをオンにすることです。

function showAllFirstDiv(topnav) { 
    $(topnav).show(); 
    $(topnav + ' > li:first').addClass('on'); 
    if ($(topnav + ' > li:first > ul:first').length) 
    { 
     var childUL = $(topnav + ' > li:first > ul:first'); 
     showAllFirstDiv(childUL); 
    } 
    else 
    return true; 
} 

と私が呼んでいる::ここで私はそれについてつもり方法です

showAllFirstDiv('.top'); 

それは.top ULおよび最初の子UL(.top> LI> UL)をオンとして.top> li:最初の子がオンになりますが、jQueryのエラーが発生しました。 'Uncaught構文エラー、認識できない式:[オブジェクトオブジェクト]'

jQueryとJavaScriptの要素が混在していると仮定しています。しかし、問題が何であるかを正確に把握しているようには見えません。

JavaScript/jQueryを初めて使用しました。ヘルプやその他の基本的な情報がありがたいです。ありがとう。

答えて

2

機能showAllFirstDiv()は...あなたが関数に渡しているchildUL変数は実際にjQueryオブジェクトである

...

をその後、jQueryオブジェクトのためのセレクタとして使用されている文字列が必要ですこの問題を解決するために、次の操作を行います

function showAllFirstDiv(topnav) { 
    $(topnav).show(); 
    $(topnav + ' > li:first').addClass('on'); 
    if ($(topnav + ' > li:first > ul:first').length) 
    { 
     var childUL = topnav + ' > li:first > ul:first'; 
     showAllFirstDiv(childUL); 
    } 
    else 
    return true; 
} 

注、childULは、現在代わりにDOM要素オブジェクトの文字列(つまり、セレクタなる)です。

希望するもの:

関連する問題