如果没有 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 元素的兄弟元素