javascript – .css(‘display’)怎么能阻止,[0] .hidden是假的,而.is(‘:hidden’)是真的吗?

前端之家收集整理的这篇文章主要介绍了javascript – .css(‘display’)怎么能阻止,[0] .hidden是假的,而.is(‘:hidden’)是真的吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个div被隐藏的情况,即使我刚刚执行的代码显示所有其他具有相同后缀的div:$(“[id $=’ – input-container’]”).show()

无论如何,一个特定的div仍然是隐藏的:$(“#single-colorRange-color-input-container”).我想也许它稍后隐藏在代码中但没有 – 在调用$inputContainers.show()后立即添加日志记录如下(并且调试器语句会停止所有后续执行):

console.log($("#single-colorRange-color-input-container").css('display'));      
$inputContainers.show();
console.log($("#single-colorRange-color-input-container").css('display'));
console.log($("#single-colorRange-color-input-container")[0].hidden);
console.log($("#single-colorRange-color-input-container").is(':hidden'));
debugger;

调用.show()之前,首先将none记录为css / display值.这是预料之中的.

然后在调用.show()之后将块记录为css / display值.这是预料之中的.

然后将false记录为结果集的第一个(唯一)元素的隐藏属性.这是预料之中的.

然后将true记录为调用.is(‘:hidden’)的结果.这是出乎意料的.

.css(‘display’)怎么能阻止,[0] .hidden是假的,而.is(‘:hidden’)是真的吗?尽管调用了.show(),但实际上div实际上仍然是隐藏的,如果有一些合理的解释,为这一个div添加特殊逻辑似乎是荒谬的.

解决方法

根据 jQuery documentation ,隐藏选择器可以在以下任何情况下返回true

>它们的CSS显示值为none.
>它们是type =“hidden”的表单元素.
>它们的宽度和高度显式设置为0.
>隐藏了一个祖先元素,因此该元素不会显示页面上.

因为hidden是一个非常简单的布尔值,并且显示是块我的猜测是它是由于最后三个中的一个,特别是最后一个点.确保所有祖先都可见.

猜你在找的JavaScript相关文章