Javascript 如何将跨度附加到<;李>;如果存在子菜单
我正在尝试构建一个响应迅速的导航,并希望在包含子菜单的所有顶级菜单项中添加一个。出于某种原因,这只是将跨度附加到所有项目上,有人能解释一下原因吗 以下是标记:Javascript 如何将跨度附加到<;李>;如果存在子菜单,javascript,jquery,html,append,Javascript,Jquery,Html,Append,我正在尝试构建一个响应迅速的导航,并希望在包含子菜单的所有顶级菜单项中添加一个。出于某种原因,这只是将跨度附加到所有项目上,有人能解释一下原因吗 以下是标记: <nav class="nav"> <ul class="nav-list"> <li class="nav-item"> <a href="#">Home</a> <ul class="nav-sub
<nav class="nav">
<ul class="nav-list">
<li class="nav-item">
<a href="#">Home</a>
<ul class="nav-submenu">
<li class="nav-submenu-item">
<a href="#">Submenu item 1</a>
</li>
<li class="nav-submenu-item">
<a href="#">Submenu item 2</a>
</li>
<li class="nav-submenu-item">
<a href="#">Submenu item 3</a>
</li>
<li class="nav-submenu-item">
<a href="#">Submenu item 4</a>
</li>
</ul>
</li>
<li class="nav-item">
<a href="#">About</a>
</li>
<li class="nav-item">
<a href="#">Services</a>
</li>
<li class="nav-item">
<a href="#">Portfolio</a>
</li>
<li class="nav-item">
<a href="#">Testimonials</a>
</li>
<li class="nav-item">
<a href="#">Contact</a>
</li>
</ul>
</nav>
-
-
-
-
-
-
-
-
-
-
您可以看到第一项有一个下拉列表,我想在每个包含子菜单的$。每个($('.nav项'),函数(索引,值){
如果($('.nav项')。子项('ul')。长度>0){
添加($('');
}
});
谢谢你的帮助 试试这个
$.each($('.nav-item'), function (index, value) {
if ($(this).children('ul').length > 0) {
$(this).append($('<span class="nav-click"></span>'));
}
});
这将始终选择第一个。找到导航项目
当您在每个导航项目中循环时,您需要使用此
if ($(this).children('ul').length > 0) {
实际上,这就是你所需要的:
$('.nav-item:has(ul)').append('<span class="nav-click" />');
我离得太近了!谢谢,我会在计时器用完时接受这个。谢谢!这是否适用于每个ul的span类?假设有一个三层菜单?@Halcyon21在这种情况下使用$('nav-li:has(ul)')。前置(“”)代码>是否仍然可以使用.has()而不是伪选择器执行此操作?我想尽可能多地使用我的课程:-)@Halcyon21当然!,你试过了吗<代码>$('nav li')。具有('ul')。前置(''代码>$('.nav项')。具有('ul')。前置('');工作完美!谢谢
if ($(this).children('ul').length > 0) {
$('.nav-item:has(ul)').append('<span class="nav-click" />');
$('nav li:has(ul)').append('<span class="nav-click" />');