如果没有 children 则针对某个元素
Targeting certain element if no children
本以为很简单的事情却让我头疼不已。
我正在尝试检查某个元素是否有 children,如果没有 children 我想将 css 更改为下一个元素 <i>
那个特定的例子。
我已经设法让脚本删除所有 <i>
元素,但它应该只从那些没有找到 children 的实例中删除它。
我通常设法让我的 jquery 与很多 trial/error 一起工作,但对于这个我却一头雾水,尽管它不是很困难。这一定是我在这里遗漏的相当简单的东西。
$( document ).ready(function() {
if ($('nav ul li').find('ul').length = 0) {
$(this).next('i').css('display','none')
}
});
HTML
<ul>
<li>
<input type="checkbox" checked>
<a href="#"><i class="fa fa-chevron-down"></i>prime 1</a>
</li>
<li>
<input type="checkbox" checked>
<a href="#"><i class="fa fa-chevron-down"></i>prime 1</a>
<ul>
<li><a href="#">sub 1</a></li>
<li><a href="#">sub 2</a></li>
</ul>
</li>
因为 if
块中的 this
没有引用 li
元素。
您可以使用 .not() 过滤器方法和 :has() 来完成
$(document).ready(function() {
$('nav ul li').not(':has(ul)').next('i').css('display', 'none');
});
注意:我认为还有另一个问题,因为 i
不能是 li
元素的兄弟元素
本以为很简单的事情却让我头疼不已。
我正在尝试检查某个元素是否有 children,如果没有 children 我想将 css 更改为下一个元素 <i>
那个特定的例子。
我已经设法让脚本删除所有 <i>
元素,但它应该只从那些没有找到 children 的实例中删除它。
我通常设法让我的 jquery 与很多 trial/error 一起工作,但对于这个我却一头雾水,尽管它不是很困难。这一定是我在这里遗漏的相当简单的东西。
$( document ).ready(function() {
if ($('nav ul li').find('ul').length = 0) {
$(this).next('i').css('display','none')
}
});
HTML
<ul>
<li>
<input type="checkbox" checked>
<a href="#"><i class="fa fa-chevron-down"></i>prime 1</a>
</li>
<li>
<input type="checkbox" checked>
<a href="#"><i class="fa fa-chevron-down"></i>prime 1</a>
<ul>
<li><a href="#">sub 1</a></li>
<li><a href="#">sub 2</a></li>
</ul>
</li>
因为 if
块中的 this
没有引用 li
元素。
您可以使用 .not() 过滤器方法和 :has() 来完成
$(document).ready(function() {
$('nav ul li').not(':has(ul)').next('i').css('display', 'none');
});
注意:我认为还有另一个问题,因为 i
不能是 li
元素的兄弟元素