1

我正在尝试使用 jQuery 的 .filter() 选项在一行中选择一个特定的 < td > 元素。

它在 Chrome 和 IE 中运行良好,但在 Firefox 中运行良好。有没有另一种方法可以在所有 3 中工作?或者至少在 Chrome 和 Firefox 中?

HTML:

<table>
    <tr id="r1">
        <td abbr='EventID'>1</td>
        <td>a</td>
    </tr>
    <tr id="r2">
        <td abbr='EventID'>2</td>
        <td>a</td>
    </tr>
    <tr id="r3">
        <td abbr='EventID'>3</td>
        <td>a</td>
    </tr>
    <tr id="r4">
        <td abbr='EventID'>4</td>
        <td>a</td>
    </tr>
</table>

Javascript:

alert($('#r1').children('td').filter('[abbr="EventID"]')[0].innerText);

这是脚本和标记的小提琴

4

3 回答 3

1

试试这个:

alert($('#r1').children('td[abbr="EventID"]')[0].innerHTML);

​</p>

于 2012-11-15T15:35:51.193 回答
1

因为只有一个元素它不会在数组中,所以不需要[0]。(您可能希望在将来进行检查以防止错误)。此外,它似乎只在 Firefox 中使用 text() 而不是 innerText 对我有用。

我在 Firefox 中运行的最终代码:

alert($('#r1').children('td[abbr="EventID"]').text());

http://jsfiddle.net/3fcdH/3/

于 2012-11-15T15:36:36.590 回答
0

如果您想获取行列表并对其进行过滤或迭代,请尝试以下操作。

HTML

<table>
    <tr class="row"><td abbr='EventID'>1</td><td>a</td></tr>
    <tr class="row"><td abbr='EventID'>2</td><td>a</td></tr>
    <tr class="row"><td abbr='EventID'>3</td><td>a</td></tr>
    <tr class="row"><td abbr='EventID'>4</td><td>a</td></tr>
</table>

JavaScript

for (int i = 0; i < = 3; i++){
alert($('.row').children('td').filter('[abbr="EventID"]')[i].innerText);
}
于 2019-05-07T08:19:22.277 回答