2017-09-29 20 views
1

我不明白爲什麼這通過我的條件,當我隱藏我的Div元素上面。我試圖找出一種方法來編寫如果div id等於可見,然後提醒用戶「內容可見」。如果我的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>

+5

在[有關':visible'選擇器](https://api.jquery.com/visible-selector/)的jQuery文檔中:_Element與'visibility:hidden'或'opacity:0'被視爲可見,因爲它們仍然佔用佈局空間._這就是jQuery條件通過的原因。你仍然可以這樣做:'if($(「#myDiv」).css(「visibility」)!==「hidden」)''。你的JS條件也會被傳遞,因爲你檢查**是隱藏的**。將'==='更改爲'!=='。 – blex

回答

0

能見度=「隱藏」仍佔據空間的瀏覽器,因此jQuery的爲報告「:可見」。如果你沒有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

編輯 更新了我的回覆,就好像您沒有將可見性設置爲可見。

+0

這足夠小,它會更好地作爲堆棧片段,因此可以在此處運行它(如問題中使用的OP)而不是代碼本。 –

相關問題