2011-01-28 73 views
0

我在尋找穿越我使用的UI元素創建一個樹。我意識到這可以使用適當的選擇器更容易地完成,但我想創建一個遞歸函數來執行此操作。遞歸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; 
} 

和我打電話:

showAllFirstDiv('.top'); 

原來的.TOP UL和第一個孩子UL(.TOP> LI> UL)爲以及轉向.top>李:首先孩子但停在那裏給我的jQuery錯誤'未捕獲的語法錯誤,無法識別的表達式:[object Object]'

我假設我混合了jQuery和JavaScript元素,但似乎無法弄清楚究竟是什麼問題。

我是新來的JavaScript/jQuery和任何幫助或其他基本指針讚賞。謝謝。

回答

2

功能showAllFirstDiv()需要一個字符串,然後將其用作jQuery對象選擇...

childUL變量,你遞給該函數實際上是一個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元素對象。

希望能幫到:)