2013-07-16 7 views
6

Jak znaleźć najwyższy indeks Z w dokumencie bez względu na to, jakie to znaczniki?Jak znaleźć najwyższy indeks zind w dokumencie niezależnie od tego, jakie znaczniki są?

Znalazłem ten kod, ale ja testowałem to i to nie działa,

//include jQuery.js -- visit: http://jquery.com/ 
$(function(){ 
    var maxZ = Math.max.apply(null,$.map($('body > *'), function(e,n){ 
      if($(e).css('position')=='absolute') 
       return parseInt($(e).css('z-index'))||1 ; 
      }) 
    ); 
    alert(maxZ); 
}); 

lepiej podejście to zrobić?

EDIT:

Wydaje się działać, jeśli mogę zmienić kod do tego,

$('body *') 

$('body > *') --> is for div only I guess. 
+1

wielkie pytanie człowiek! Zawsze lubię rozumieć kod, zamiast uciekać się do wtyczek. –

Odpowiedz

6

To nie jest najbardziej efektywnym rozwiązaniem, ale to powinno działać. jsFiddle.

Należy pamiętać, że aby wskaźnik Z mógł zwracać wartość, musi być określona pozycja.

var highest = -999; 

$("*").each(function() { 
    var current = parseInt($(this).css("z-index"), 10); 
    if(current && highest < current) highest = current; 
}); 

alert(highest); 
+0

masz rację. Dziękuję za odpowiedź. – laukok

+0

to oświadczenie jQuery dla mnie działało. dzięki –

+0

Dobrze jest używać Number.NEGATIVE_INFINITY lub -Infinity zamiast magicznej liczby -999. Jeśli wszystkie elementy są ustawione, a wszystkie mają indeks Z mniejszy niż -999, to nie daje to prawidłowej odpowiedzi. – Julian

3

To wydaje się działać:

var maxZ=0; 
$('*').each(function(){ 
    if($(this).css('zIndex') > maxZ) maxZ = $(this).css('zIndex'); 
}) 
console.log(maxZ); 

jsFiddle example

Myślę, że jednym z problemów z kodem pan pisał, że jesteś sprawdzanie tylko dla elementów pozycjonowanych bezwzględnie.

+0

awww piękne! – laukok

Powiązane problemy