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

使用jquery获取所有先前元素的子元素,jquery,Jquery,所以这在我的脑海里似乎比它需要的更复杂。我需要找到一种方法addClass('selected')到所有先前元素的特定子级。假设我的HTML如下所示: <ul> <li class="radio"> <div class="child"> <span>1</span> </div> </li> <li class="radio"> <div cla

所以这在我的脑海里似乎比它需要的更复杂。我需要找到一种方法
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>
$('.radio span').click(function(){
  $('.radio span').removeClass('selected');
  $(this).addClass('selected');
});
这很好,因为它将类添加到第四个类中。我还需要它来选择4之前所有li中的跨度。我试过:

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

但它似乎不想工作?

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

您应该将其从addClass中链接出来:

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

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

您应该将其从addClass中链接出来:

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

好极了,真是魅力四射!当它让我接受的时候,我会接受的:德旺德福,像一个魔咒一样工作!当它允许我的时候,我会接受的