我正在寻找遍历我使用ul元素创建的树。我意识到这可以使用适当的选择器更容易地完成,但我想创建一个递归函数来执行此操作。
想法是向下移动树并打开所有子列表,同时将类“on”添加到li:first-child元素以打开列表并突出显示每个列表中的第一个项目。以下是我的意思:
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 Syntax error,unrecognized expression:[object Object]'
我假设我混淆了jQuery和JavaScript元素,但似乎无法确切地知道问题是什么。
我是JavaScript / jQuery的新手,我们非常感谢任何帮助或其他基本指针。感谢。
答案 0 :(得分: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元素对象。
希望有所帮助:)