我有这个简单的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
为什么这只适用于第一个元素??
答案 0 :(得分:8)
使用$.inArray
时,请务必检查-1
,而不仅仅是真或假
if ( $.inArray( parseInt(self.data('id'), 10), errors ) == -1 ) {
原因是$.inArray
返回找到的值的索引,而对于索引为0
的第一项,这是假的,这就是它仅适用于的原因第一个。