2016-11-07 55 views
18

我使用JS作爲改變我創建的SPA內容的一種方式。當我按下一個按鈕來改變內容從這個HTML變化:JQuery:如果div可見

<div id="selectDiv" style="display: none;"> 

這樣:

<div id="selectDiv" style> 

現在我的SPA的部分有一個包含若干個複選框的DIV,每個代表div,所以當我按下提交按鈕時,應該顯示的下一個div將成爲複選框列表中的第一個被選中的項目。

我想知道是否有一種方法在JQuery中的代碼「幾乎檢測」哪些div現在可見。像這樣:

if($('#selectDiv').isVisible()){ 
    //JS code associated with this div. 
} 

有什麼建議嗎?

+0

難道你不會搞亂'.hasClass'函數來做這樣的事嗎?檢查一個元素是否具有某個類,然後從那裏去? –

+0

'if(document.getElementById(「selectDiv」)。style.display!==「none」){...}' –

+0

「幾乎檢測」是什麼意思?您可以使用$ elem.is(「:visible」)來確定元素是否可見! – Gacci

回答

28

您可以使用.is(':visible')

選擇是可見的所有元素。

例如:

if($('#selectDiv').is(':visible')){ 

此外,您還可以得到DIV其由是可見:

$('div:visible').callYourFunction(); 

活生生的例子:

console.log($('#selectDiv').is(':visible')); 
 
console.log($('#visibleDiv').is(':visible'));
#selectDiv { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="selectDiv"></div> 
 
<div id="visibleDiv"></div>

+1

嘿那裏 - 不要質疑這個答案的正確性,但請考慮對這類問題推薦或投票。 Stack Overflow上已經有了一些非常全面的答案,我們可以用這個問題來代替。 – Serlite

+0

我可以做這樣的事嗎? $(document).ready(function(){if($('#selectDiv')。(':visible')){ //此關聯的JS代碼 } }); –

+0

是的,看我的更新。 –