如何在具有特定ID的表中选择" sortasc"类的所有元素?

时间:2020-03-06 14:25:48  来源:igfitidea点击:

假设我有以下HTML:

<table id="foo">
  <th class="sortasc">Header</th>
</table>

<table id="bar">
  <th class="sortasc">Header</th>
</table>

我知道我可以执行以下操作以获取所有具有class =" sortasc"的元素

$$('th.sortasc').each()

但是,这给了我来自表foo和表bar的第th个元素。

我怎样才能告诉它只给我表foo中的第一个元素?

解决方案

table#foo th.sortasc

CSS选择器将类似于" #foo th.sortasc"。在jQuery中将是$('#foo th.sortasc')。

这是使用纯净JS的方法:

var table = document.getElementById('tableId');
var headers = table.getElementsByTagName('th');
var headersIWant = [];
for (var i = 0; i < headers.length; i++) {
  if ((' ' + headers[i].className + ' ').indexOf(' sortasc ') >= 0) {
    headersIWant.push(headers[i]);
  }
}
return headersIWant;

带有嵌套表,例如:

<table id="foo">
  <th class="sortasc">Header</th>
  <tr><td>
    <table id="nestedFoo">
      <th class="sortasc">Nested Header</th>
    </table>
  </td></tr>
</table>

$('table#foo th.sortasc')将为我们提供所有信息,因为我们使用的是后代选择器。如果只需要foo的th,则应使用子选择器$('table#foo> th.sortasc')。

请注意,IE6的CSS不支持子选择器,尽管JQuery仍可以通过JavaScript正确地选择子选择器。