我有一个问题,我需要将父div的高度调整为子div中最长文本的长度,但我需要连续测试所有div并找到最长的文本并使用该宽度作为该行中所有父div的高度值。然后我需要相同的循环函数来递增jQuery选择器,它开始选择一个类名“row-1”到下一行,即第二行,然后遍历所有这些并设置它们的高度...然后到第三个row,row-3等等,直到测试服务器端查询返回的所有行并调整行高。听起来很奇怪,但看起来是这样的:
我正在使用PHP来创建行并添加类名,我有一个能够干净而快速地输出标记的函数!
但是如果这有助于PHP和整体逻辑如下:
从第一行中的1个项开始,然后在循环查询时向每行添加1个项,直到检索到所有项。然后在创建新行时缩小所有内容。
我在下面按行运行这个jquery函数...但我需要一个循环函数,直到所有项都被检索到。这是我能够实现的目标:
$('.row-1 div.article-list-title').each(function() {
maxWidth = maxWidth > $(this).width() ? maxWidth : $(this).width();
var titwidth = $(this).width();
console.log(titwidth);
});
$('.row-1').each(function() {
$(this).height(maxWidth);
});
$('.row-2 div.article-list-title').each(function() {
maxWidth = maxWidth > $(this).width() ? maxWidth : $(this).width();
var titwidth = $(this).width();
console.log(titwidth);
});
$('.row-2').each(function() {
$(this).height(maxWidth);
});
/* And so on */
非常感谢任何帮助!
先谢谢你的帮助!
答案 0 :(得分:0)
我不认为我对你要做的事情了解得太多,所以我会保存“我不会这样做”的演讲。
尽管如此,我认为这会给你你想要的东西(如果它是你想要使用的jQuery)。
heights = new array();
/** Loop through the title classes **/
$('div.article-list-title').each(function(){
var $this = $(this),
currentRow = $this.parent(),
x = 1;
/** Match the parent row class name **/
while(! currentRow.hasClass("row-"+ x)) x++;
if (heights.length < x) heights[x] = 0;
if ($this.width() > heights[x]) heights[x] = $this.width();
});
/** Now update all the row-x class heights **/
for (var y = 1; y <= heights.length; y++) {
$(".row-"+y).height(heights[y]);
}
小心while(! currentRow.hasClass("row-"+ x)) x++;
,如果article-list-title
元素没有父row-x
类元素,它将永远循环