jQuery indexOf无法正常工作

时间:2013-11-14 14:54:20

标签: jquery arrays html-table indexof

我遇到了这个问题,无法弄清楚要做什么。

我有桌子:

<table class="jtable">
<tbody>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
    <tr>
        <td>2</td>
        <td>agea</td>
        <td>haeh</td>
    </tr>
    <tr>
        <td>3</td>
        <td>2</td>
        <td>1</td>
    </tr>
</tbody>
</table>

我需要检查第一栏,这就是我的工作:

$(document).ready(function(){
    var arr = new Array(2, 1);
    $('.jtable').find("tbody tr").each(function(){
        var firstCol = $(this).find("td:first").text();
        var inArray = arr.indexOf(firstCol);
        alert(firstCol+" "+inArray);
        if(inArray == -1){
            $(this).css("background", "red");
        } else {
            $(this).css("background", "green");
        }
    });
});

但是对于来自indexOf的所有循环周期,我得到的是-1,当我将indexOf(firstCol)更改为数组中的一个数字时,它运行良好,但我需要动态变量。任何解决方案,或我做错了什么?

这是小提琴:http://jsfiddle.net/raa8B/

我也尝试了$.inArray

2 个答案:

答案 0 :(得分:2)

您正在寻找整数数组中的字符串。您应该在indexOf

之前转换为int
 var inArray = arr.indexOf(parseInt(firstCol));

JSFiddle

答案 1 :(得分:0)

this fiddle

您必须将text()转换为整数,以将其与数组中的整数进行比较:

var firstCol = parseInt($(this).find("td:first").text());