これを行うにはいくつかの方法があります(私が知っていることです)。
CSS表示のテスト
if ($('#foo').css('display') == 'none')
可視性をテストする
if ($('#foo').is(':visible'))
可視性では、要素が存在するかどうかを確認できます。
ドキュメント内のスペースを消費する場合、要素は可視と見なされます。可視要素の幅または高さが 0 より大きい。
可視性: 非表示または不透明度: 0 の要素は、レイアウト内のスペースを消費するため、可視と見なされます。
ただし、両方で (ユーザーによる) 可視性をテストできないことに注意してください。
要素を非表示にするには、display プロパティを「none」に設定するか、visibility プロパティを「hidden」に設定します。ただし、これら 2 つの方法では結果が異なることに注意してください。
可視性: hidden は要素を非表示にしますが、以前と同じスペースを占有します。要素は非表示になりますが、レイアウトには影響します。
display: none は要素を非表示にし、スペースを占有しません。要素は非表示になり、要素が存在しないかのようにページが表示されます。
そのため、どちらの例でも、要素がユーザーにとってあらゆる意味で見えるかどうかをテストしていません。
だから私の質問は:
- 上記の 2 つの if のコードの違いは何ですか?
- 要素がユーザーに表示されるかどうかをテストする最良の方法は何ですか:
次のようなものを使用する必要がありますか?
if ($('#foo').is(':visible') &&
$('#foo').css('opacity') > 0 &&
$('#foo').css('visibility') != 'hidden')