jQuery each()和if语句仅适用于第一个元素

时间:2014-04-17 12:15:28

标签: javascript jquery

我有这个简单的jQuery代码

$(document).ready( function () {
  $('#line_items_table tr').each( function () {
    var self = $(this);
    console.log(parseInt(self.attr('data-id')));
    if ( !$.inArray( parseInt(self.attr('data-id')), errors )) {
      console.log("inside conditional");
      self.addClass('incorrect_item');
    }
  });
});

使用errors = [19,20,21],我得到此输出

3417
3419
"inside conditional"
3420
3421
3422 
3423 
3424 
3425

errors = [20,21],此输出:

3417
3419
3420
"inside conditional"
3421
3422
3423
3424
3425

为什么这只适用于第一个元素??

1 个答案:

答案 0 :(得分:8)

使用$.inArray时,请务必检查-1,而不仅仅是真或假

if ( $.inArray( parseInt(self.data('id'), 10), errors ) == -1 ) {

原因是$.inArray返回找到的值的索引,而对于索引为0的第一项,这是假的,这就是它仅适用于的原因第一个。