选择列出一个项目,如果它有子列表
Selecting list a item if it has child list
我有一个 link 的列表。如果父项,我需要向 link 添加一些内容
LI 包含另一个列表。难以选择顶层而不是子级。
<div id="container">
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
</ul>
</div>
JS
$('#container > ul > li').has('ul').each(function() {
$(this).find('a').append('zzz');
});
如您的问题所述,我会过滤 parents 具有列表的锚点。
$('a')
.filter(function() { return $(this).parent().find('ul').length; })
.each(function() {
$(this).append('zzz');
});
Demo
你试试这个,
$('#container > ul > li').has('ul').each(function() {
$(this).find('li').next().append('<li><a href="#">My new Tag</a></li>');
});
这是一个疯狂的想法...您可以完全使用 CSS 来完成此操作,方法是将 <a>
标签作为父标签 <li>
.[=15 中的最后一个子标签=]
#container > ul > li > a:not(:last-child):after {
content: 'zzz';
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
</ul>
</div>
否则,您可以在 jQuery
中使用类似的选择器
$('#container > ul > li > a:not(:last-child)').append('zzz');
我有一个 link 的列表。如果父项,我需要向 link 添加一些内容 LI 包含另一个列表。难以选择顶层而不是子级。
<div id="container">
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
</ul>
</div>
JS
$('#container > ul > li').has('ul').each(function() {
$(this).find('a').append('zzz');
});
如您的问题所述,我会过滤 parents 具有列表的锚点。
$('a')
.filter(function() { return $(this).parent().find('ul').length; })
.each(function() {
$(this).append('zzz');
});
Demo
你试试这个,
$('#container > ul > li').has('ul').each(function() {
$(this).find('li').next().append('<li><a href="#">My new Tag</a></li>');
});
这是一个疯狂的想法...您可以完全使用 CSS 来完成此操作,方法是将 <a>
标签作为父标签 <li>
.[=15 中的最后一个子标签=]
#container > ul > li > a:not(:last-child):after {
content: 'zzz';
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
<ul>
<li>
<a href="#">link</a>
</li>
<li>
<a href="#">link</a>
</li>
</ul>
</li>
</ul>
</div>
否则,您可以在 jQuery
中使用类似的选择器$('#container > ul > li > a:not(:last-child)').append('zzz');