jQuery .filter(selector)无法在firefox中运行

时间:2012-11-15 15:33:13

标签: jquery firefox google-chrome

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

它适用于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);

这是脚本和标记的fiddle

3 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

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

我在Firefox中使用的最终代码:

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

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

答案 2 :(得分: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);
}