如何.css('display')是block,[0].hidden是false,.is(':h
How can .css('display') be block, [0].hidden be false, and .is(':hidden') be true?
我遇到了一种情况,即div被隐藏,尽管我刚刚执行的代码显示了具有相同后缀的所有其他div:$("[id$='-input-container']").show()
不管怎样,有一个特定的div仍然是隐藏的:$("#single-colorRange-color-input-container")
。我想它可能隐藏在代码后面的某个地方,但没有——在调用$inputContainers.show()
之后,我立即添加了日志记录,如下所示(debugger
语句停止所有后续执行):
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/显示值。这是意料之中的事。
然后在调用.show()
之后,将block
记录为css/显示值。这是意料之中的事。
然后false
被记录为结果集的第一个(唯一的)元素的hidden
属性。这是意料之中的事。
则作为调用CCD_ 12的结果,记录CCD_。这是意外的。
.css('display')
怎么可能是块,[0].hidden
怎么可能是假,.is(':hidden')
怎么可能是真?尽管调用了.show()
,但div实际上是隐藏的,如果有合理的解释,那么仅为这一个div添加特殊逻辑对我来说似乎是荒谬的。
根据jQuery文档,对于以下任何情况,隐藏选择器都可以返回true
- 它们的CSS显示值为none
- 它们是type="hidden"的表单元素
- 它们的宽度和高度明确设置为0
- 祖先元素是隐藏的,因此该元素不会显示在页面上
由于隐藏是一个非常简单的布尔值,而显示是块,我猜测这是由于最后三个中的一个,特别是最后一点。确保所有祖先都可见。
元素的祖先可能被隐藏,因此.is()
可能返回true
。
element.hidden仅在元素具有html5隐藏属性时求值。
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden
此属性不能用于隐藏可能合法地显示。例如,它不应该用于隐藏选项卡选项卡式界面的面板,因为这是一个样式决策另一种显示它们的样式将导致一个完全正确的页面。
jquery隐藏是对对象可见性的评估
- 它们的CSS显示值为none
- 它们是type="hidden"的表单元素
- 它们的宽度和高度明确设置为0
- 祖先元素是隐藏的,因此该元素不会显示在页面上
https://api.jquery.com/hidden-selector/
console.log($("#sic").css("display")); // Add css #sic { display : }
它显示html标记的默认属性。这意味着如果标签是块,它将是块,如果它是隐藏的,那么它将是无。
示例:
1.)
<div id="sic">Hello</div>
console.log($("#sic").css("display")); // OUTPUT : block
2.)
<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: }
使用CSS的全部属性,如果.is(':hidden')
,您将不会得到true
在你的情况下:我更改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
只需写出完整的属性。
console.log($("#sic").css("display","block")); // displaying html
console.log($("#sic")[0].hidden); // false
console.log($("#sic").is(':hidden')); // false
- 如果 a 为 false,则 if(a) === if(false)
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如何将localStorage值设置为false
- JavaScript-切换“;全部检查”;复选框true/false
- gulp Iconify任务抛出错误TypeError:Path必须是字符串.收到false
- 如何使用javascript将字段强制设置为false
- (false==false==true)怎么可能是真的
- Array.every返回false,而不是类型error
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 为什么当我在数组上测试regex时,它会返回false
- WIll window.addEventListener(“加载”,function(),false);等待浏览器自动填
- 过滤器返回true或false
- 什么是'true'和'false'和'null'
- 在if语句中,undefined等于false
- 检查文本区域是否为空总是返回false
- PHP strtotime()为JavaScript日期字符串返回false
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 在JavaScript中为true==1和false==0
- 使用ajax调用中的数据而不使用async:false
- 如何.css('display')是block,[0].hidden是false,.is(':h