如果没有孩子,则针对某些元素

时间:2015-12-23 12:32:12

标签: javascript jquery children

我期望相当简单的事情让我很头疼。

我正在尝试检查某个元素是否有子元素,如果没有孩子,我想更改该特定实例的下一个元素<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>

1 个答案:

答案 0 :(得分:4)

因为this块中的if未引用li元素。

您可以使用.not()过滤器方法:has()来执行此操作,如

$(document).ready(function() {
  $('nav ul li').not(':has(ul)').next('i').css('display', 'none');
});

注意:我认为还有另一个问题,因为i不能成为li元素的兄弟元素