是否可以检查元素的CSS display == block
或none
使用JavaScript?
Answers:
就像sdleihssirhc在下面说的那样,如果元素的display
继承或由CSS规则指定,则需要获取其计算样式:
return getComputedStyle(element, null).display;
元素具有一个style
属性,可以告诉您想要什么,如果样式是内联声明的或使用JavaScript声明的:
console.log(document.getElementById('someIDThatExists').style.display);
将为您提供一个字符串值。
currentStyle
?从来没有听说过,也检查document.body.currentStyle
了却一无所获(并不感到惊讶)
如果样式声明为内联或使用JavaScript声明,则可以直接获取该style
对象:
return element.style.display === 'block';
否则,您将必须获得计算出的样式,并且浏览器存在不一致之处。IE使用一个简单的currentStyle
对象,但其他所有人都使用一种方法:
return element.currentStyle ? element.currentStyle.display :
getComputedStyle(element, null).display;
将null
被要求在Firefox 3及以下版本。
===
而不是==
在这里没有问题,但同样也没有优势。保证两个操作数都是字符串,因此两个运算符都执行完全相同的步骤。
对于jQuery,您的意思是这样吗?
$('#object').css('display');
您可以像这样检查它:
if($('#object').css('display') === 'block')
{
//do something
}
else
{
//something else
}
这个答案并非您想要的,但在某些情况下可能会有用。如果您知道该元素在显示时具有某些尺寸,则也可以使用以下方法:
var hasDisplayNone = (element.offsetHeight === 0 && element.offsetWidth === 0);
编辑:为什么这可能比直接检查CSS display
属性更好?因为您不需要检查所有父元素。如果某个父元素具有display: none
,则其子元素也被隐藏,但仍然具有element.style.display !== 'none'
。
使用纯JavaScript,您可以检查style.display
属性。使用jQuery,您可以使用$('#id').css('display')
您可以使用jQuery检查它:
$("#elementID").css('display');
它将返回字符串,其中包含有关此元素的显示属性的信息。