2013-07-16 12 views
6

Wie kann ich den höchsten Z-Index innerhalb eines Dokuments finden, unabhängig davon, um welche Tags es sich handelt?Wie finden Sie den höchsten Z-Index innerhalb eines Dokuments, egal welche Tags sie sind?

fand ich diesen Code, aber ich es getestet und es funktioniert nicht,

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

besser Ansatz, dies zu tun?

EDIT:

Es scheint zu funktionieren, wenn ich den Code dies zu ändern,

$('body *') 

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

große Frage Mann! Ich mag es immer, den Code zu verstehen, anstatt zuerst auf Plugins zurückzugreifen. –

Antwort

6

Dies ist nicht die effizienteste Lösung, aber es sollte funktionieren. jsFiddle.

Bitte beachten Sie, dass Sie eine Position angeben müssen, damit der Z-Index einen Wert zurückgibt.

var highest = -999; 

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

alert(highest); 
+0

Sie haben Recht. Danke für die Antwort. – laukok

+0

diese jQuery-Anweisung funktionierte für mich. danke –

+0

Es ist gute Praxis, Number.NEGATIVE_INFINITY oder -Infinity anstelle der magischen Zahl -999 zu verwenden. Wenn alle Elemente positioniert sind und alle einen Z-Index von weniger als -999 haben, gibt dies nicht die richtige Antwort. – Julian

3

Dies scheint zu funktionieren:

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

jsFiddle example

Ich glaube, eines der Probleme mit dem Code, den Sie geschrieben ist, dass Sie nur für absolut positionierte Elemente sind zu überprüfen.

+0

awww schön! – laukok