如何获得最高的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;
答案 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'));
});
顺便说一句,小心使用自己定义的属性。如果可以,请使用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')));
答案 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);