我正在尝试制作一个循环遍历所有<div class="check-js"></div>
的jQuery函数,比较高度以找出最高的,并将它们全部设置在与最高的相同的高度,但这似乎不是工作。这可能是什么问题?
$(document).ready(function() {
$('.check-js').each(function() {
alert($(this).index);
var aux = 0;
var max = 0;
aux = $(this).style.height;
aux.replace(/\D/g,'');
alert(max);
if (Math.max(aux, max)==aux){
max = aux;
}
});
});
这还没有完成我没有添加更改高度的指令,因为我无法循环<div>
s,max
的警报没有弹出
答案 0 :(得分:4)
你需要在每次迭代中使用共享变量max
否则max
的值将被重置...也是为了获得元素的高度.height()
$(document).ready(function () {
//shared variable
var max = 0,
$els = $('.check-js');
$els.each(function () {
max = Math.max($(this).height(), max); //use height method from jQuery
});
$els.height(max)
});
演示:Fiddle
答案 1 :(得分:1)
首先,因为您正在循环使用它们,所以如果没有each
范围之外的变量,则无法比较它们。下面是一个简单的方法来找到每个循环/函数jQuerys
的最高点:
function findHighest(jQueryObjects){
var highest = 0;
jQueryObjects.each(function(){
var localHeight = $(this).innerHeight();
if(localHeight > highest){
highest = localHeight;
}
});
return highest;
}
现在你可以$('.check-js').css("height", findHighest($('.check-js')));
对每个高度应用最高的高度(尽管更好首先在变量中声明它:var height = findHighest($('.check-js')); $('.check-js').css("height", height);
);