2013-07-16 1 views
6

Come posso trovare lo z-index più alto in un documento, non importa quali tag siano?Come trovare lo z-index più alto in un documento, non importa quali tag siano?

ho trovato questo codice, ma ho provato e non funziona,

//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); 
}); 

Qualsiasi approccio migliore per fare questo?

EDIT:

Sembra funzionare se cambio il codice per questo,

$('body *') 

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

ottima domanda uomo! Mi piace sempre capire il codice piuttosto che ricorrere ai plug-in prima. –

risposta

6

Questa non è la soluzione più efficace, ma dovrebbe funzionare. jsFiddle.

Si noti che è necessario specificare una posizione affinché lo z-index restituisca un valore.

var highest = -999; 

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

alert(highest); 
+0

hai ragione. Grazie per la risposta. – laukok

+0

questa dichiarazione jQuery ha funzionato per me. grazie –

+0

È buona norma utilizzare Number.NEGATIVE_INFINITY o -Infinity anziché il numero magico -999. Se tutti gli elementi sono posizionati e tutti hanno z-index inferiore a -999, questo non darà la risposta corretta. – Julian

3

Questo sembra funzionare:

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

jsFiddle example

Credo che uno dei problemi con il codice che hai postato è che si sta controllando solo per elementi posizionati in modo assoluto.

+0

awww bella! – laukok