我有一段简单的 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
为什么这只适用于第一个元素?
最佳答案
使用$.inArray
时,始终检查-1
,而不仅仅是 true 或 false
if ( $.inArray( parseInt(self.data('id'), 10), errors ) == -1 ) {
原因是 $.inArray
返回找到值的索引,而对于第一项,索引为 0
,这是假的,这就是原因它仅适用于第一个。
关于javascript - jQueryeach() 和 if 语句仅适用于第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23132829/