【问题标题】:jquery - set height to every 2 or 3 elementsjquery - 将高度设置为每 2 或 3 个元素
【发布时间】:2011-05-12 02:09:51
【问题描述】:

我在一个页面上有几个 div,每列 2 列,所以每 2 个 div 需要具有相同的高度。据我所知,可用于强制相等高度的插件使所有元素的高度相同,我只需要每对都具有相同的高度。

我的标记看起来像这样

我有以下 jquery 可以工作,但我确信它可以更容易完成

    {
    var rowOneHeight = Math.max($('div.large:eq(0)').height(),$('div.large:eq(1)').height());
    $('div.large:eq(0)').css('min-height', rowOneHeight);
    $('div.large:eq(1)').css('min-height', rowOneHeight);

    var rowTwoHeight = Math.max($('div.large:eq(2)').height(),$('div.large:eq(3)').height());
    $('div.large:eq(2)').css('min-height', rowTwoHeight);
    $('div.large:eq(3)').css('min-height', rowTwoHeight);

    var rowThreeHeight = Math.max($('div.large:eq(4)').height(),$('div.large:eq(5)').height());
    $('div.large:eq(4)').css('min-height', rowThreeHeight);
    $('div.large:eq(5)').css('min-height', rowThreeHeight);

}

对于一组三个 div 也需要这样做。 谢谢

【问题讨论】:

标签: jquery height equals


【解决方案1】:

您可以使用 .slice() 进行循环,以 2 个为一组进行循环,如下所示:

var elems = $("div.large");
for(var i = 0; i < elems.length; i+=2) {
  var divs = elems.slice(i, i+2), 
      height = Math.max(divs.eq(0).height(), divs.eq(1).height());
  divs.css('min-height', height);
}

或者,对于更通用的方法,因为您也想用 3 来做,这里有一个插件形式:

$.fn.setMinHeight = function(setCount) {
  for(var i = 0; i < this.length; i+=setCount) {
    var curSet = this.slice(i, i+setCount), 
        height = 0;
    curSet.each(function() { height = Math.max(height, $(this).height()); })
          .css('min-height', height);
  }
  return this;
};

那么你可以这样称呼它:

$("div.large").setMinHeight(2); //or 3, etc

You can test it out here.

【讨论】:

  • 不知道为什么您没有收到正确答案的通知。这个解决方案正是我想要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 2015-02-03
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多