jQuery最近不起作用

时间:2018-06-25 07:57:55

标签: jquery

在这里,为什么jquery closest无法正常工作?我尝试使用findnext,但不起作用。我只想在包含html class的{​​{1}}的最近li中添加children

ul
$(document).ready(function(){
  if ($('li').children("ul").length) {
    $(this).closest(".submenu").html('+');
  }
})
*{
margin:0px;
padding:0px;
}
ul li{
  list-style:none;
  float:left;
  margin-right:10px;
}

ul li ul li{
 float:none;
}

2 个答案:

答案 0 :(得分:2)

您需要找到ul内的li的长度。

$('.submenu').parent().each(function(){
    if ($(this).children("ul").length) {
      $(this).find('.submenu').html('+');
    }
})
*{
margin:0px;
padding:0px;
}
ul li{
  list-style:none;
  float:left;
  margin-right:10px;
}

ul li ul li{
 float:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
</head>
<body>
  <ul>
  <li>General<span class="submenu"></span></li>
  <li>Extra<span class="submenu"></span></li>
  <li>Sport<span class="submenu"></span>
    <ul>
      <li>
        Volleyball
      </li>
      <li>
        Football
      </li>
    </ul>
  </li>
  </ul>
</body>
</html>

答案 1 :(得分:1)

您可以通过更改以下代码中的最简单的方法来实现

if ($('li').children("ul").length) {
    $(this).find('span').html('+');
  }

对此

  $('ul li:has(ul)').find(".submenu").html('+');

$(document).ready(function(){
  $('ul li:has(ul)').find(".submenu").html('+');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

  <ul>
    <li>General<span class="submenu"></span></li>
    <li>Extra<span class="submenu"></span></li>
    <li>Sport<span class="submenu"></span>
      <ul>
        <li>
          Volleyball
        </li>
        <li>
          Football
        </li>
      </ul>
    </li>
  </ul>

相关问题