如果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>

最佳答案

像这样的任何jQuery方法都将始终返回一个对象,并且一个对象永远不会“虚假”。

如果要检查jQuery对象是否为空,请检查.length

if (error_msg.filter(":hidden").length) {
  console.log("it's hidden");
}


该库将.length维护为好像对象是一个数组,因此,如果长度为零,则其中没有任何内容。如果非零,则至少有一个元素。

关于javascript - 为什么(:hidden)在可见时返回true?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30448488/

10-12 06:53