-1

AAA の「テーブル」が選択されていない理由がわかりません:

<b>CLICK ME!</b>
<br/>
<table>
    <tr>
      <td>AAA</td>
    </tr>
</table>

<b>CLICK ME!</b>
<table>
    <tr>
      <td>BBB</td>
    </tr>
</table>

<script>
  $(document).ready(function() {
    $(document).on('click', "b", function(){
      $(this).next("table").css('background-color', 'red');
    });
  });
</script>

$(this).next().next().css('background-color', 'red'); テーブルを使用する場合が見つかりました。

nextAll を探すのではなく、要素をクリックした後の最初のテーブルのみが必要です。

4

3 に答える 3

3

.nextこの場合はテーブルではない非常に次の兄弟要素を検索し<br/>ます。探しているのは、使用できる選択またはjQueryのセレクター.nextAllの最初のテーブルを取得することです.eq:first

$(this).nextAll("table").eq(0).css('background-color', 'red');

http://jsfiddle.net/xcNhN/

$(this).nextAll("table:first").css('background-color', 'red');

http://jsfiddle.net/xcNhN/1/

于 2013-06-29T21:07:05.507 に答える
1

並べ替え:

$(this).nextAll("table:first")
于 2013-06-29T21:16:48.523 に答える
1

問題は.next()、直後の要素のみを参照することです。セレクターを含めると、その要素が一致するかどうかがチェックされ、一致しない場合は空のセットが返されます。

やろうとしていることを行うには、.nextAll()代わりに使用する必要があります。

最初のテーブルのみが必要であると理解していますが、.nextAll()後続のすべてのテーブルが返されます。:firstこれを修正するには、次のようにセレクターに明示的に含めることができます。

$(this).nextAll('table:first')

...または、それらをすべて取得したら、リストを縮小できます。

$(this).nextAll('table').eq(0)

ここで実際の例を見ることができます: http://jsfiddle.net/6x3EY/

于 2013-06-29T21:23:49.533 に答える