我期望相当简单的事情让我很头疼。
我正在尝试检查某个元素是否有子元素,如果没有孩子,我想更改该特定实例的下一个元素<i>
的css。
我设法让脚本删除所有<i>
元素,但它只应从没有找到子代的实例中删除它。
我通常设法让我的jquery处理大量的试验/错误,但是在这个问题上,即使它不是很难,我仍然处于黑暗状态。它必须是相当简单的东西,我在这里失踪。
$( 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>
答案 0 :(得分:4)
因为this
块中的if
未引用li
元素。
您可以使用.not()过滤器方法:has()来执行此操作,如
$(document).ready(function() {
$('nav ul li').not(':has(ul)').next('i').css('display', 'none');
});
注意:我认为还有另一个问题,因为i
不能成为li
元素的兄弟元素