jQuery将另外两个li的高度设置为与最高的相同的高度

jQuery将另外两个li的高度设置为与最高的相同的高度,jquery,jquery-selectors,Jquery,Jquery Selectors,我有这把小提琴。在这里你可以看到我的标记就像ul里面的一堆李。在这篇文章中,我把3个lis作为一行,下一个3个lis作为另一行,以此类推。现在我已经使用jQuery来获取一个li的高度,这个高度比其他两个li高,并将这两个li转换为最高li的相同高度。这里,我的jQuery对于第一行运行良好,但对于其他行不起作用。那么,有人能告诉我如何使其他行执行相同的高度吗?任何帮助和建议都是非常值得赞赏的。 我的jQuery代码如下 <script type="text/javascript">

我有这把小提琴。在这里你可以看到我的标记就像ul里面的一堆李。在这篇文章中,我把3个lis作为一行,下一个3个lis作为另一行,以此类推。现在我已经使用jQuery来获取一个li的高度,这个高度比其他两个li高,并将这两个li转换为最高li的相同高度。这里,我的jQuery对于第一行运行良好,但对于其他行不起作用。那么,有人能告诉我如何使其他行执行相同的高度吗?任何帮助和建议都是非常值得赞赏的。 我的jQuery代码如下

<script type="text/javascript">
  jQuery(document).ready(function(){
    jQuery(function() {
      var items = $("ul.products li");
      var rows = items.length / 3;
      if (rows <= 0)
        rows = 1;
      for(var r=0;r<rows;r++) {
        normalizeRowHeight(r, items);

      }
    });

    function normalizeRowHeight(row, itemSet) {
      var maxRowHeight = 0;
      itemSet.slice(0,3).each(function(i) {
        if ($(this).height() > maxRowHeight )
          maxRowHeight = $(this).height();
        });  
      itemSet.slice(0,3).each(function(i) {
        $(this).css('height', maxRowHeight + "px");
      });
    }
  });
</script>
$(document).ready(function()
        {
            var i=0,j=0;
            $('li').each(function(){
                j=$(this).height();
                if (i<j)
                    i=j;
            });
            $('li').each(function(){
                $(this).height(i);//set Max height of li to other li
                alert($(this).height());
            });
        });

jQuery(文档).ready(函数(){
jQuery(函数(){
风险值项目=$(“ul.li”);
变量行=items.length/3;

如果(rows逻辑中有一个漏洞,您可以选择要操作的切片。您总是处理前3项

试试这个:

function normalizeRowHeight(row, itemSet) {
  var maxRowHeight = 0;
  itemSet.slice(row * 3,(row + 1)*3).each(function(i) {
    if ($(this).height() > maxRowHeight )
      maxRowHeight = $(this).height();
    });  
  itemSet.slice(row * 3,(row + 1)*3).each(function(i) {
    $(this).css('height', maxRowHeight + "px");
  });
}
你可以这样做

<script type="text/javascript">
  jQuery(document).ready(function(){
    jQuery(function() {
      var items = $("ul.products li");
      var rows = items.length / 3;
      if (rows <= 0)
        rows = 1;
      for(var r=0;r<rows;r++) {
        normalizeRowHeight(r, items);

      }
    });

    function normalizeRowHeight(row, itemSet) {
      var maxRowHeight = 0;
      itemSet.slice(0,3).each(function(i) {
        if ($(this).height() > maxRowHeight )
          maxRowHeight = $(this).height();
        });  
      itemSet.slice(0,3).each(function(i) {
        $(this).css('height', maxRowHeight + "px");
      });
    }
  });
</script>
$(document).ready(function()
        {
            var i=0,j=0;
            $('li').each(function(){
                j=$(this).height();
                if (i<j)
                    i=j;
            });
            $('li').each(function(){
                $(this).height(i);//set Max height of li to other li
                alert($(this).height());
            });
        });
$(文档).ready(函数()
{
var i=0,j=0;
$('li')。每个(函数(){
j=$(this).height();

如果(i您需要更新
.slice()
中每一行的数字,那么,
.slice(0,3)
将变为
.slice(3,6)
,然后
.slice(6,9)
等等。类似以下的操作可以实现这一点:

(function($) {
  function normalizeHeight(items) {
    var maxHeight = 0, itemHeight;

    items.each(function() {
      itemHeight = $(this).height();
      if (itemHeight > maxHeight) {
        maxHeight = itemHeight;
      }
    }).height(maxHeight + 'px');
  }

  $(document).ready(function(){
    var itemsPerRow = 3,
        items = $('ul.products li'),
        rows = items.length / itemsPerRow, 
        r, min, max;

    if (rows < 1) rows = 1;

    for(r = 0; r < rows; r++) {
      min = itemsPerRow * r,
      max = min + itemsPerRow;
      normalizeHeight(items.slice(min, max));
    }
  });
}(jQuery));
(函数($){
功能规格化重量(项目){
var maxHeight=0,itemHeight;
项。每个(函数(){
itemHeight=$(this.height();
如果(itemHeight>maxHeight){
最大高度=项目高度;
}
}).高度(最大高度+px');
}
$(文档).ready(函数(){
var itemsPerRow=3,
项目=$('ul.products li'),
行=items.length/itemsPerRow,
r、 最小值,最大值;
如果(行数<1)行数=1;
对于(r=0;r

我放了一个。

为什么你不能用css来做这个呢???@谢谢Rob White,谢谢你完美的回答。但是你能描述一下你在这行中所做的改变吗。我很好奇你在这里。谢谢。你的技巧很好,但你能解释一下你的代码吗。很抱歉问你,因为我是jQuery的新手。Cu想知道魔法是如何发生的吗?这实际上与您所做的相同,只是您使用了硬编码的.slice(0,3),这意味着它将只对前三个
  • 应用normalizeRow…为了将其应用于每一行,您需要遍历这些行,以便更新该.slice()每一次。这有意义吗?我不太擅长解释抱歉哈。