使用jquery获取所有先前元素的子元素

时间:2013-06-03 18:13:41

标签: jquery

所以这似乎比我需要的更复杂。我需要找到一种方法addClass('selected');给所有先前元素的特定孩子。假设我的HTML看起来像这样:

<ul>
  <li class="radio">
    <div class="child">
      <span>1</span>
    </div>
  </li>
  <li class="radio">
    <div class="child">
      <span>2</span>
    </div>
  </li>
  <li class="radio">
    <div class="child">
      <span>3</span>
    </div>
  </li>
  <li class="radio">
    <div class="child">
      <span>4</span>
    </div>
  </li>
  <li class="radio">
    <div class="child">
      <span>5</span>
    </div>
  </li>
</ul>

现在,当我点击“4”时,我会有这样的事情:

$('.radio span').click(function(){
  $('.radio span').removeClass('selected');
  $(this).addClass('selected');
});

这很好,因为它将类添加到第4个。我需要它在4之前选择所有li中的跨度。我试过:

$(this).closest('li.radio').prevAll().children('span').addClass('selected');

但它似乎不想工作?

1 个答案:

答案 0 :(得分:3)

您需要使用.find来获取span,因为它不是li(它是后代)的孩子。

$(this).closest('li.radio').prevAll().find('span').addClass('selected');

你应该把它从addClass链接起来:

$(this).addClass('selected').closest('li.radio').prevAll().find('span').addClass('selected');