-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/>不是表格。,您可能正在寻找的是.nextAll并获取您可以使用的选择中的第一个表格.eq或 jQuery 的: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

问题是.next()只会查看紧随其后的元素。如果您包含一个选择器,它将检查该元素是否匹配,如果不匹配,它将只返回一个空集。

要做你想做的事,你需要使用.nextAll()

我知道您只想要第一个表,而.nextAll()将返回所有后续表。要解决此问题,您可以显式包含:first在选择器中,如下所示:

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

...或者您可以在获得所有这些列表后缩减列表:

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

你可以在这里看到一个例子:http: //jsfiddle.net/6x3EY/

于 2013-06-29T21:23:49.533 回答
1

排序为:

$(this).nextAll("table:first")
于 2013-06-29T21:16:48.523 回答