javascript - jQueryeach() 和 if 语句仅适用于第一个元素

标签 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

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

最佳答案

使用$.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/

相关文章:

javascript - WebStorm:动态生成类方法的 JavaScript 代码完整

javascript - 从年份获取世纪

javascript - 使用jquery触发多个mailto链接

jquery - 更改 Bootstrap 表单元格中复选框的大小

javascript - 在javascript中计算日期之间的差异

javascript - 使用 gulp.src() 列出数组中的所有文件

javascript - 使用 React.js promise 所有并正确更新状态

javascript - jQuery 1.9.1 $ ('#idCheckbox:checked' ) IE7 和 IE8 错误

php - 获取 jquery 图像宽度并添加类

php - Wordpress REST API 自定义帖子类型 禁止删除访问