如果隐藏了ID为“err_msg”的div,我正在尝试做某事。但是当元素未被隐藏时,下面的代码返回true。为什么会这样?
<script>
$(function () {
var error_msg = $("#err_msg");
if(error_msg.filter(":hidden")){
console.log("The error message is hidden");
}
});
</script>
<body>
<div id="err_msg">Test </div>
答案 0 :(得分:3)
任何像这样的jQuery方法总是返回一个对象,而一个对象永远不会“falsy”。
如果要检查jQuery对象是否为空,请检查.length
:
if (error_msg.filter(":hidden").length) {
console.log("it's hidden");
}
库维护.length
就好像对象是一个数组一样,所以如果长度为零,则其中没有任何内容;如果它不为零,那么至少有一个元素。
答案 1 :(得分:2)
使用is(':hidden')
,
error_msg.is(":hidden")
.filter()将始终返回一个对象。是否清空,这是真的。
$(function () {
var error_msg = $("#err_msg");
if(error_msg.is(":hidden")){
console.log("The error message is hidden");
}
})