可能的逻辑错误或比较器问题

时间:2015-02-20 14:31:19

标签: javascript jquery comparator

我正在做以下事情:

if ($('#selectYears option[value="' + $(this).val() + '"]') != null || $('#selectYears option[value="' + $(this).val() + '"]') != [] ) {
      console.log("inside if")
      $('#selectYears option[value="' + $(this).val() + '"]').remove().appendTo($('#selectYears'))
    } else {
      console.log("inside else")
      $('#selectedYears option[value="' + $(this).val() + '"]').remove().appendTo($('#selectYears'))
    }
})

如果我在Chrome控制台中执行$('#selectYears option[value="my value"]'),我会收到[]。但我在里面打印出来(因此我的检查失败了)。在这种情况下我需要进入其他方面。我哪里错了?

1 个答案:

答案 0 :(得分:4)

jQuery选择器永远不会返回null或数组,它返回一个jQuery对象。它看起来像是控制台中的一个数组,因为它具有使其类似于数组的属性#34;但它实际上并不是一个数组,并且不会比较等于[]。有关此内容的更多信息,请参阅

What makes a jQuery object show up as an array in Chrome's Developer Tools?

如果您想知道是否匹配了任何内容,请使用.length

if ($('#selectYears option[value="' + $(this).val() + '"]').length != 0) {