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番目のクラスに追加するため、これはうまく機能します。4 より前のすべての li のスパンも選択する必要があります。

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

しかし、それは働きたくないようですか?

4

1 に答える 1

3

の子ではない(子孫)ため、 を使用.findして取得する必要があります。spanli

$(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 に答える