display: none
我想过滤掉由于自身显式或由于祖先被隐藏而不是因为它在选择时恰好没有文本而被隐藏的元素(来自给定的 jQuery 对象) 。
例如:
<p id="p"></p>
现在,$('#p').is(':hidden')
将是true
因为该段落中没有文本内容,因此没有可见的宽度或高度。但是,如果我在 p 中放入一些文本,jQuery 将不再认为它是隐藏的。我的代码需要找到这种元素并将文本放入其中。
不幸的是,元素的计算样式并没有display: none
从祖先继承,所以似乎唯一的方法是找出是否由于样式而隐藏了某些东西是遍历树直到display: none
找到一个元素:
jQuery.expr.filters.reallyHidden = function(elem) {
do {
if (jQuery.css( elem, "display" ) === "none") {
return true;
}
elem = elem.parentNode;
} while (elem);
return false;
};
有没有更简单的方法来做到这一点?