jQuery - 检查所有兄弟姐妹是否有相同的课程,如果有的话

时间:2014-01-29 16:38:05

标签: jquery html

我正在编写一个jquery函数来检查并查看所有兄弟姐妹是否都有某种类型的“out”,如果是,那么就做点什么。我无法弄清楚我哪里出错了。任何帮助将不胜感激!

My failed Codepen attempt

<ul>
  <h3>I'm a title</h3>
  <li class="out">Item 1</li>
  <li class="">Item 2</li>
  <li class="">Item 3</li>
</ul>

<ul>
  <h3>I'm a second set of people</h3>
  <li class="out">Item 1</li>
  <li class="out">Item 2</li>
  <li class="out">Item 3</li>
</ul>

$('h3').each(function() {
  if( $('h3').nextAll('li').hasClass('out')) {
    $('h3').css('background', 'red');
  }
});

2 个答案:

答案 0 :(得分:2)

尝试

HTML

<ul>
  <li><h3>I'm a title</h3></li>
  <li class="out">Item 1</li>
  <li class="">Item 2</li>
  <li class="">Item 3</li>
</ul>

<ul>
  <li><h3>I'm a second set of people</h3></li>
  <li class="out">Item 1</li>
  <li class="out">Item 2</li>
  <li class="out">Item 3</li>
</ul>

然后

$('li:has(h3)').each(function() {
  if($(this).siblings(':not(.out)').length == 0){
    $(this).find('h3').css('background', 'red');
  }
});

演示:Fiddle

答案 1 :(得分:1)

您的无效HTML ,因此将其更改为

<强> HTML

<h3>I'm a title</h3>
<ul>
    <li class="out">Item 1</li>
    <li class="">Item 2</li>
    <li class="">Item 3</li>
</ul>
 <h3>I'm a second set of people</h3>
<ul>
    <li class="out">Item 1</li>
    <li class="out">Item 2</li>
    <li class="out">Item 3</li>
</ul>

<强>的JavaScript

$('ul').each(function() {
  if( $(this).find('li.out').length == $(this).find('li').length) {
    $(this).prev('h3').css('background', 'red');
  }
});

DEMO