2016-11-07 28 views
18

Używam JS jako sposobu na zmianę zawartości SPA, które tworzę. Po naciśnięciu przycisku, aby zmienić zawartość zmienia HTML to:JQuery: jeśli div jest widoczny

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

do tego:

<div id="selectDiv" style> 

teraz częścią mojego SPA ma div, który zawiera szereg pól, z których każda reprezentuje div, a więc po naciśnięciu przycisku submit, następny element div, który powinien zostać wyświetlony, będzie pierwszym elementem na liście checkbox, która została wybrana.

Zastanawiam się, czy istnieje sposób w JQuery dla kodu "prawie wykryć", który div jest teraz widoczny. coś takiego:

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

Wszelkie sugestie?

+0

Czy możesz nie zadzwonić z funkcją '.hasClass', aby zrobić coś takiego? Sprawdź, czy element ma określoną klasę, a następnie stamtąd? –

+0

'if (document.getElementById (" selectDiv "). Style.display! ==" none ") {...}' –

+0

Co masz na myśli mówiąc "prawie wykryć"? Możesz użyć $ elem.is (": visible"), aby określić, czy element jest widoczny! – Gacci

Odpowiedz

28

Można użyć .is(':visible')

Zaznacza wszystkie elementy, które są widoczne.

Na przykład:

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

Ponadto, można uzyskać div, który jest widoczny przez:

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

żywo przykład:

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

Hej tam - nie kwestionując poprawności tej odpowiedzi, ale rozważ proszę sugerowanie lub głosowanie nad duplikatem na takie pytania. Istnieją już dość obszerne odpowiedzi dotyczące przepełnienia stosu, na które możemy wskazać to pytanie. – Serlite

+0

Czy mogę zrobić coś takiego? $ (document) .ready (function() { if ($ ("# selectDiv"). jest (": visible")) { // Kod JS powiązany z tym div. } }); –

+0

Tak, zobacz moją aktualizację. –