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;
};
これを行う簡単な方法はありますか?