0

所以这在我的脑海中似乎比它需要的更复杂。我需要找到一种方法来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 之前的所有 li 中的跨度。我试过:

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

但它似乎不想工作?

4

1 回答 1

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');
于 2013-06-03T18:23:11.553 回答