所以我在两个单独的文件中运行了两个JS块。第一个传递元素列表,第二个传递元素并找到最高的元素并将其应用于其余元素。一个相当基本的脚本真的,但我搞砸了某个地方。只要它遇到的第一个元素是最高的,该脚本就像魅力一样。如果它是第二个,则它将所有第二个元素的高度应用于所有这些......
有人可以检查我做了什么,并告诉我哪里出错了吗?
这两个脚本:
function equalizeFunction1(){
var elements = [
$('.element1'),
$('#element2')
];
masterEqualizeHeights(elements);
}
手术背后的大脑:
function masterEqualizeHeights(arg){
elements = arg;
var maxHeight = 0;
for (i = 0; i < elements.length; i++) {
if(elements[i].height() > maxHeight){maxHeight = elements[i].height()}
}
for (i = 0; i < elements.length; i++) {
elements[i].height(maxHeight)
}
}
答案 0 :(得分:1)
问题是你如何设计数组,你的数组有jQuery对象,可能包含多个元素,所以在for循环中你需要迭代jquery对象中的每个元素并检查高度,否则只有高度该集合中的第一个元素将被视为
在数组中,由于类选择器可以返回多个元素,因此需要遍历该jQuery对象中的每个项目,以便
function masterEqualizeHeights(arg) {
var elements = arg;
var maxHeight = 0;
$.each(elements, function () {
$(this).each(function () {
var height = $(this).height();
if (height > maxHeight) {
maxHeight = height;
}
});
});
$.each(elements, function () {
$(this).height(maxHeight);
})
}
更简单的方法是
function equalizeFunction1() {
masterEqualizeHeights($('.element1, #element2'));
}
function masterEqualizeHeights(els) {
var maxHeight = 0;
els.each(function () {
if ($(this).height() > maxHeight) {
maxHeight = elements[i].height()
}
});
els.height(maxHeight)
}