用于导航列表的递归 JQuery 函数
我正在寻找遍历使用 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 > ul 。 li:first-child on 但停在那里,给我 jQuery 错误“未捕获的语法错误,无法识别的表达式:[object Object]”
我假设我混淆了 jQuery 和 JavaScript 元素,但似乎无法准确弄清楚问题是什么。
我是 JavaScript/jQuery 新手,非常感谢任何帮助或其他基本指示。谢谢。
I'm looking to traverse a tree I've created using ul elements. I realize this can be done more easily using the appropriate selector, but I'd like to create a recursive function to do this.
The idea is to move down the tree and turn on all the sub lists while adding the class 'on' to li:first-child elements to turn the list on and highlight first items in each list. Here's how I'm going about it:
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;
}
and I'm calling:
showAllFirstDiv('.top');
It turns on the .top ul and the first child ul ( .top > li > ul ) as well as turning .top > li:first-child on but stops there giving me the jQuery error 'Uncaught Syntax error, unrecognized expression: [object Object]'
I'm assuming I'm mixing up jQuery and JavaScript elements, but can't seem to figure out exactly what the problem is.
I'm new to JavaScript/jQuery and any help or other basic pointers are appreciated. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
函数
showAllFirstDiv()
需要一个字符串,然后将其用作 jQuery 对象的选择器...您传递给该函数的
childUL
变量实际上是一个 jQuery object...要解决该问题,请执行以下操作:
注意,
childUL
现在是一个字符串(成为选择器)而不是 DOM 元素对象。希望有帮助:)
The function
showAllFirstDiv()
requires a string which is then used as a selector for the jQuery object...The
childUL
variable that you are handing to the function is actually a jQuery object...To solve the problem, do the following:
Note,
childUL
is now a string (that becomes the selector) instead of the DOM element object.Hope that helps :)