You can say:
$(element).is(':visible')
and
$(element).is(':hidden')
jQuery considers an element to be visible if it consumes space in the document. For most purposes, this is exactly what you want.
Emulate jQuery's implementation Show archive.org snapshot :
element.offsetWidth > 0 && element.offsetHeight > 0;
Query 3 slightly modifies the meaning of :visible (and therefore of :hidden).
Emulate jQuery's implementation:
!(window.getComputedStyle(element).display === "none")
Don't use Element#visible()
, it just checks if a CSS attribute display: none
exists. This is too naive for most cases.
Emulate jQuery's implementation Show archive.org snapshot instead:
element.offsetWidth > 0 && element.offsetHeight > 0;
Or maybe you'd even like to patch Prototype so it behaves like jQuery:
Element.addMethods({
visible: function() {
return offsetWidth > 0 && offsetHeight > 0;
}
});