Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .css(';display';)怎么可能是块[0]。hidden应该是false,(';:hidden';)应该是true?_Javascript_Jquery_Css - Fatal编程技术网

Javascript .css(';display';)怎么可能是块[0]。hidden应该是false,(';:hidden';)应该是true?

Javascript .css(';display';)怎么可能是块[0]。hidden应该是false,(';:hidden';)应该是true?,javascript,jquery,css,Javascript,Jquery,Css,我遇到了这样一种情况:一个div被隐藏,即使我刚刚执行的代码显示了具有相同后缀的所有其他div:$(“[id$=”-input container'])。show() 尽管如此,有一个特定的div仍然是隐藏的:$(“#single colorRange color input container”)。我想它可能是隐藏在代码后面的某个地方,但不是--在调用$inputContainers.show()之后,我添加了如下日志记录(并且调试器语句停止所有后续执行): 在调用.show()之前,首先将n

我遇到了这样一种情况:一个div被隐藏,即使我刚刚执行的代码显示了具有相同后缀的所有其他div:
$(“[id$=”-input container'])。show()

尽管如此,有一个特定的div仍然是隐藏的:
$(“#single colorRange color input container”)
。我想它可能是隐藏在代码后面的某个地方,但不是--在调用
$inputContainers.show()
之后,我添加了如下日志记录(并且
调试器
语句停止所有后续执行):

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

然后在调用
.show()
之后,将
记录为css/显示值。这是意料之中的

然后,
false
被记录为结果集第一个(唯一)元素的
hidden
属性。这是意料之中的

然后,调用
.is(':hidden')
的结果将记录
true
。这是出乎意料的


.css('display')
如何被阻止,
[0]。hidden
如何为false,
.is(':hidden')
如何为true?尽管调用了
.show()
,但实际上div还是隐藏着的,如果有合理的解释,那么为这一个div添加特殊逻辑对我来说似乎是荒谬的。

元素的祖先可能被隐藏了,这就是为什么
.is()
可能会返回
true

根据以下情况,隐藏选择器可能会返回true

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

因为hidden是一个非常简单的布尔值,而display是block,所以我猜这是由于最后三个点中的一个,特别是最后一个点。确保所有祖先也可见。

元素。隐藏仅在元素具有html5隐藏属性时计算

此属性不得用于隐藏可能会丢失的内容 合法地被展示。例如,它不应用于隐藏选项卡 选项卡式界面的面板,因为这是一个样式决定和 显示它们的另一种样式将生成一个完全正确的页面

jqueryhidden是对对象可见性的评估

  • 它们的CSS显示值为“无”
  • 它们是type=“hidden”的表单元素
  • 它们的宽度和高度显式设置为0
  • 祖先元素是隐藏的,因此该元素不会显示在页面上
console.log($(“#sic”).css(“display”);//添加css#sic{display:}

它显示html标记的默认属性。这意味着,如果标记是block,那么它将是block,如果它是隐藏的,那么它将是none

例如:

1.)

使用CSS的完整属性,如果
.is(':hidden')

在您的情况下:我更改了id值,它太长了

<div id="sic">Hello
</div>


#sic {
  display : none;
}


console.log($("#sic").css("display")); // None
console.log($("#sic")[0].hidden); // false
console.log($("#sic").is(':hidden')); // true

有演示吗?当我尝试使用演示元素时,我得到了-none、block、false、false。我得到了与@Harry:相同的结果。请添加一个显示问题的示例。看来
调试器
可能没有停止后续执行,或者至少这是我的结论,因为我确实在后续代码中隐藏了div。试图结束这个问题,但无法,因为已经有了答案,即使他们可能没有解决我的具体情况,他们似乎仍然可以帮助别人。
<div id="sic">Hello</div>
console.log($("#sic").css("display")); // OUTPUT : block
<div style="display:none" id="sic">Hello</div>
console.log($("#sic").css("display")); // OUTPUT : none
console.log($("#sic").css("display")); // It create the css like #sic{display: }
<div id="sic">Hello
</div>


#sic {
  display : none;
}


console.log($("#sic").css("display")); // None
console.log($("#sic")[0].hidden); // false
console.log($("#sic").is(':hidden')); // true
console.log($("#sic").css("display","block")); // displaying html
console.log($("#sic")[0].hidden); // false
console.log($("#sic").is(':hidden')); // false