Javascript JQuery获取子元素的最高高度并放入父元素
在a中,我在页面上的UL组中的各个Javascript JQuery获取子元素的最高高度并放入父元素,javascript,jquery,math,jquery-plugins,Javascript,Jquery,Math,Jquery Plugins,在a中,我在页面上的UL组中的各个标记上设置了相同的高度。但现在我意识到,为了更好地设置主题,我想在UL组中的一组标签上设置最高的高度,并将其设置为其各自的父级本身,以便更好地设置我的页面主题。在这里,我试图找到UL组中的最高高度,并将其设置为UL 问题仍然是具体性。第一个UL组的最高高度被设置为页面上的所有标签。UL组(第1行)中最高的的高度为260px,第2行的高度为156px。然而,260px仍然被设置为页面上的两个UL标签。ULs将在页面上增长,因此我希望代码可以扩展,而不必指定JQue
标记上设置了相同的高度。但现在我意识到,为了更好地设置主题,我想在UL组中的一组
标签上设置最高的高度,并将其设置为其各自的父级
本身,以便更好地设置我的页面主题。在这里,我试图找到UL组中
的最高高度,并将其设置为UL
问题仍然是具体性。第一个UL组的
最高高度被设置为页面上的所有
标签。UL组(第1行)中最高的
的高度为260px,第2行的高度为156px。然而,260px仍然被设置为页面上的两个UL标签。ULs将在页面上增长,因此我希望代码可以扩展,而不必指定JQuery中的每一行。到目前为止,我已经尝试过:
// get the height of the tallest LI within each UL group
var max = Math.max.apply(Math, $(".item-list ul li").map(
function(){
return $(this).height();
}
));
// now render the height in each parent UL
$(".item-list ul").each(function() {
$(this).find(".item-list ul").height(max);
});
。。。但第二部分不起作用。这是可行的,但是
$(".item-list ul").height(max);
。。。它将最高的
的高度放在所有UL标签的页面上。理想情况下,最终HTML应为:
<div class="item-list row-1">
<ul style="height: 260px;">
etc...
<div class="item-list row-2">
<ul style="height: 156px;">
etc...
高度:260px;“>
等
高度:156px;“>
等
基于以下如果我理解正确,您应该在
.each()
循环中执行max
操作
function thisHeight(){
return $(this).height();
}
$(".item-list ul").each(function() {
var thisULMax = Math.max.apply(Math, $(this).find("li").map(thisHeight));
$(this).height(thisULMax);
});
我还将map函数设置为命名函数,以便您可以重用它
这里有几个更干净的解决方案 这个函数将函数传递给
height()
,将其用作迭代器。把事情缩短一点
function thisHeight(){
return $(this).height();
}
$(".item-list ul").height(function() {
return Math.max.apply(Math, $(this).find("li").map(thisHeight));
});
这里有另一种使用
.reduce()
的方法,尽管它需要一个用于IE8和更低版本的垫片
function maxHeight(max, elem) {
var h = $(this).height();
return max > h ? max : h;
}
$(".item-list ul").height(function() {
return $(this).find("li").toArray().reduce(maxHeight, 0);
});
既然您有两个类“.item list”的
标记,为什么不试试这个呢:
$(".item-list ul").eq(0).height(max);
这将只设置HTML中第一个标记的高度。似乎很复杂
$(".item-list ul").each(function(idx, elm) {
var LIheight = 0;
$('li', elm).each(function() {
if ($(this).height() > LIheight) LIheight = $(this).height();
}).height(LIheight);
});
仅供参考,
$(this).find(“.item list ul”)
不起作用,因为this
是ul
,而.find
方法只查找嵌套在其调用上下文中的元素。因为ul
中没有嵌套的ul
元素,所以它找不到任何内容。嗨!有人能给我解释一下这里的最高限额吗?