如何在jquery中的行尾添加选择器值?

时间:2012-10-01 23:33:26

标签: jquery loops auto-increment

我有一个问题,我需要将父div的高度调整为子div中最长文本的长度,但我需要连续测试所有div并找到最长的文本并使用该宽度作为该行中所有父div的高度值。然后我需要相同的循环函数来递增jQuery选择器,它开始选择一个类名“row-1”到下一行,即第二行,然后遍历所有这些并设置它们的高度...然后到第三个row,row-3等等,直到测试服务器端查询返回的所有行并调整行高。听起来很奇怪,但看起来是这样的:

http://ccs.btcny.net/redhook/

我正在使用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 */

非常感谢任何帮助!

先谢谢你的帮助!

1 个答案:

答案 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类元素,它将永远循环