2017-09-29 6 views
1

上記のDiv要素を隠すと、なぜこの条件が満たされないのかわかりません。 div idがvisibleと等しいかどうかを書き留めて、ユーザーに「コンテンツが表示されている」と警告する方法を見つけようとしています。 「可視」私のdiv idが隠し等しい場合、ユーザー「隠されたコンテンツ」idが可視であるか隠されているかを調べる

//document.getElementById("myDiv").style.visibility = "visible"; 
 
document.getElementById("myDiv").style.visibility = "visible"; 
 

 
var status = document.getElementById("myDiv").style.visibility; 
 

 

 
if($("#myDiv").is(":visible") == true){ 
 
    alert("visible JQuery"); 
 
} 
 

 
if (document.getElementById("myDiv").style.visibility === "hidden") 
 
{ 
 
    alert("visible JS"); 
 
} 
 

 
alert(status);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 

 
<div id="myDiv">Hello</div>
=まだブラウザでスペースを占有し、そうjQueryのは、として報告「隠れた」

+5

jQueryドキュメントの ':visible'セレクタ(https://api.jquery.com/visible-selector/)では、' visibility:hidden'または 'opacity:0'を持つ要素が可視であると見なされますが、それらはまだレイアウト内のスペースを消費しています。そのため、jQueryの条件が満たされます。 'if($("#myDiv ").css(" visibility ")!==" hidden ")'これもできます。可視性**が** '隠されている 'ことを確認するので、JSの条件も満たされます。 '==='を '!=='に変更してください。 – blex

答えて

0

可視性を警告します。 style.display = 'none'を実行した場合、jQueryの可視チェックは起動しません。

1

可視性:hiddenまたはopacity:0の要素は、まだレイアウト内のスペースを消費するため、表示可能と見なされます。

jQuery :visible

:visibleセレクタは、専用属性displayのために動作します。あなたは何ができるか

は次のとおりです。

if ($("#myDiv").css("visibility") == "hidden") { 
    // do something when hidden ... 
} 
1

これは私のために働くようだ:

document.getElementById("myDiv").style.visibility = "visible"; 
document.getElementById("myDiv").style.visibility = "hidden"; 

if($("#myDiv").css("visibility") !== "hidden") { 
    alert("visible JQuery"); 
} 

if (document.getElementById("myDiv").style.visibility === "hidden") { 
    alert("hidden JS"); 
} 

Codepen:

https://codepen.io/foozie3moons/pen/OxgomO

EDIT 可視性を可視に設定していないかのように、私の応答を更新しました。

+0

これは、コードスンの代わりに(質問に使用されているOPのように)ここで実行できるように、スタックスニペットとしては十分に小さいほど十分です。 –

関連する問題