Jquery 在DOM重建后获取最短的div
在DOM重建(with.append())之后,我无法找到最短的div(根据它的当前高度)。我希望将json数组中的数据一个接一个地追加到当前最短的div中(使它们的高度相等)。 这就是我的HTML的外观:Jquery 在DOM重建后获取最短的div,jquery,html,Jquery,Html,在DOM重建(with.append())之后,我无法找到最短的div(根据它的当前高度)。我希望将json数组中的数据一个接一个地追加到当前最短的div中(使它们的高度相等)。 这就是我的HTML的外观: <div class="article_column" id="data0"></div> <div class="article_column" id="data1"></div> <div class="article_column"
<div class="article_column" id="data0"></div>
<div class="article_column" id="data1"></div>
<div class="article_column" id="data2"></div>
<div class="article_column" id="data3"></div>
这就是我目前在jquery中所做的:
$.each(data, function (i, column) {
var shortest = [].reduce.call($(".article_column"), function (sml, cur) {
return $(sml).height() < $(cur).height() ? sml : cur;
});
$(shortest).append(column.html);
});
$。每个(数据、函数(i、列){
var shortest=[].reduce.call($(“.article\u列”),函数(sml,cur){
返回$(sml).height()<$(cur).height()?sml:cur;
});
$(最短).append(column.html);
});
这似乎是一种工作,但只有前4个元素左右。在这之后,大多数数据只附加到一个div。显然这不是我要找的。我的代码有问题吗?我怀疑DOM更新速度不够快,因此选择了错误的div。
有什么想法吗?我不确定这是最好的方法,但这就是我要做的
var shortest = null, height = 100000;
$.each($('.article_column'), function(k, v){
if(parseInt($(v).height()) < height) {
shortest = $(v);
height = $(v).height();
}
});
var shortest=null,height=100000;
$。每个($('.article_column'),函数(k,v){
if(parseInt($(v).height())
感谢您的建议。我让它工作了。问题不是我的jQuery,而是我附加的html的css。它被设置为
width:auto代码>因此,在附加它时,div的宽度只有5个像素。因此,在影响高度之前,可以将多个div追加到一列中。设置最小宽度
解决了这个问题 这样做的原因是什么?你不能只指定一个CSSmin height
或一个固定的height
?我正在动态加载更多数据,我希望它们均匀地附加到div中,以保持相同的高度。同样的问题。大多数数据只附加到一个div。我不确定是什么导致了这个问题。。我猜这是因为我在一个json数组中循环,每次循环都要执行,并将数据添加到最短的数组中……也许jQuery无法处理这个`?