如何获得几个div的最高z-index值具有相同的名称?

时间:2013-01-29 04:09:10

标签: javascript jquery

  

可能重复:
  Select DIV with highest z-index

如何获得最高的z-index值?
将所有div z-index值放入数组并使用math.max?或任何建议?

<div class="a" z-index="1">
<div class="a" z-index="3">
<div class="a" z-index="4">
<div class="a" z-index="5">
<div class="a" z-index="6">
<div class="a" z-index="11">...

<div class="b" z-index="//top+1">

JS

var top = // highest z-index value;

5 个答案:

答案 0 :(得分:3)

你可以这样做:

var zIndx = [];
$("div.a").each(function() {
    zIndx.push( $(this).attr("z-index") );
});
console.log( Math.max.apply( Math, zIndx ) );

答案 1 :(得分:2)

JavaScript的Array.reduce可以完成这项工作。 .get可以为您提供所需的数组:

var top = $(".a").get().reduce(function (a, b) {
   return Math.max(typeof a === 'object' && $(a).attr('z-index') || a,
      $(b).attr('z-index'));
});

http://jsfiddle.net/8jpea/1/

顺便说一句,小心使用自己定义的属性。如果可以,请使用data-z-index

答案 2 :(得分:2)

var maxValue = Math.max.apply( Math, $('.a').map(function() {
    return +$.attr(this, 'z-index');
}));

这是小提琴:http://jsfiddle.net/ZFhzu/


如果您使用的是现代JavaScript,则不需要那种花哨的apply。您可以改为传播值:

let maxValue = Math.max(...$('.a').get().map(el => +$.attr(el, 'z-index')));

这是小提琴:http://jsfiddle.net/7y3sxgbk/

答案 3 :(得分:1)

这是您可以使用的功能。

var index_highest = 0;   

// more effective to have a class for the div you want to search and 
// pass that to your selector

$(".a").each(function() {

         // always use a radix when using parseInt

         var index_current = parseInt($(this).css("zIndex"), 10);

         if(index_current > index_highest) {
               index_highest = index_current;
          }
});

console.log(index_highest);

答案 4 :(得分:1)

    var top = 0;
    $('.a').each(function(){
        if(top < parseInt($(this).attr('z-index'))){
            top= parseInt($(this).attr('z-index'));
        }
    });
    $('.b').attr('z-index',top+1);

jsfiddle.net/EC36x