将类添加到包含<strong>标记的<li>元素中

时间:2018-07-20 11:08:25

标签: javascript jquery loops jquery-ui

仅在类由strong左括号和右括号中的li元素组成的情况下,我才尝试将其添加到列表元素。我觉得我已经很接近了,但是我缺少一些东西。

这是到目前为止我得到的代码:

$('.section-header__subtext ul li').each(function() {      
  if ($(this).is('strong')) {
    $(this).addClass('selected');
  }
});

谢谢!

3 个答案:

答案 0 :(得分:7)

由于li永远不会是strong,因此$(this).is('strong')将始终是false,因此CSS类不会添加到元素中。

您可以使用:has() selector

  

选择包含至少一个与指定选择器匹配的元素的元素。

$('.section-header__subtext ul li:has(strong)').addClass('selected');

$('.section-header__subtext ul li:has(strong)').addClass('selected');
.selected {
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="section-header__subtext">
  <ul>
    <li>1</li>
    <li><strong>2</strong></li>
    <li>3</li>
    <li><strong>4</strong></li>
  </ul>
</div>

答案 1 :(得分:0)

我认为这就是您要寻找的。 jQuery find()搜索给定的元素。 .length部分将返回找到的元素数量。

$('.section-header__subtext ul li').each(function() {
    if ($(this).find('strong').length > 0) {
      $(this).addClass('selected');
    }
});

答案 2 :(得分:0)

$('.section-header__subtext ul li').each(function() {
  if ($(this).find('strong').length > 0) {
    $(this).addClass('selected');
  }
});

使用find()方法搜索另一个元素内的元素。