2011-01-28 75 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元素对象。

希望能帮到:)