2013-11-14 3 views
0

Я столкнулся с этой проблемой и не могу понять, что делать.jQuery 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"); 
     } 
    }); 
}); 

Но все это я получаю -1 для всех циклов цикла от indexOf, когда я меняю indexOf(firstCol) на одно из чисел в массиве, он работает хорошо, но мне нужен динамический var. Любые решения этого или то, что я делаю неправильно?

Вот скрипка: http://jsfiddle.net/raa8B/

Я попытался это с $.inArray слишком

ответ

2

Вы ищете строку в целое число массива. Вы должны преобразовать в междунар перед тем indexOf

var inArray = arr.indexOf(parseInt(firstCol)); 

JSFiddle

+0

Спасибо, это работает :)))) – user2945241

0

this fiddle См.

Вы должны отдать свой text() в целое число, чтобы сравнить его с целыми числами в массиве:

var firstCol = parseInt($(this).find("td:first").text()); 
Смежные вопросы