可能的逻辑错误或比较器问题
Possible logic error or comparator issue
我正在做以下事情:
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"]')
,我会得到 []。但是如果我在里面打印出来(因此我的检查失败了)。在这种情况下,我需要进入 else。我哪里错了?
一个jQuery选择器从不returns null
或一个数组,它returns一个jQuery对象。它在控制台中看起来像一个数组,因为它具有使它成为 "array-like" 的属性,但它实际上不是一个数组,不会与 []
进行比较。有关更多信息,请参阅
What makes a jQuery object show up as an array in Chrome's Developer Tools?
如果您想知道是否匹配任何内容,请使用 .length
:
if ($('#selectYears option[value="' + $(this).val() + '"]').length != 0) {
我正在做以下事情:
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"]')
,我会得到 []。但是如果我在里面打印出来(因此我的检查失败了)。在这种情况下,我需要进入 else。我哪里错了?
一个jQuery选择器从不returns null
或一个数组,它returns一个jQuery对象。它在控制台中看起来像一个数组,因为它具有使它成为 "array-like" 的属性,但它实际上不是一个数组,不会与 []
进行比较。有关更多信息,请参阅
What makes a jQuery object show up as an array in Chrome's Developer Tools?
如果您想知道是否匹配任何内容,请使用 .length
:
if ($('#selectYears option[value="' + $(this).val() + '"]').length != 0) {