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

时间:2008-09-19 12:52:03

标签: javascript prototypejs

假设我有以下HTML:

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

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

我知道我可以执行以下操作来获取所有 th 元素,这些元素具有class =“sortasc”

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

然而,这为我提供了表 foo 和表 bar 中的 th 元素。

我怎么能告诉它只给出表 foo 中的元素?

4 个答案:

答案 0 :(得分:8)

表#foo th.sortasc

答案 1 :(得分:3)

这是你用直接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;

答案 2 :(得分:0)

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

答案 3 :(得分:0)

使用嵌套表,如:

<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')将为您提供 all ,因为您使用的是descendant selector。如果你只想要foo,那么你应该使用child selector - $('table#foo&gt; th.sortasc')。

请注意,IE6中的子选择器是not supported,但是JQuery仍然可以通过JavaScript正确地执行此操作。