jquery - 设置每 2 或 3 个元素的高度

发布于 2024-10-03 08:01:10 字数 877 浏览 0 评论 0原文

我在一个页面上有几个 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进行相同的操作。 谢谢

I have several divs on a page in columns of 2, so every 2 divs needs to be the same height. As far as I can tell the plugins available for to force equal height do all elements the same height, I just need each pair to be the same height.

my markup looks like this

etc

I have the following jquery which works, but I am sure it can be done easier

    {
    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);

}

it would also need the same to be done with a group of three divs.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独孤求败 2024-10-10 08:01:10

您可以使用 .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

: net/kevinvess/Djywr/166/" rel="nofollow noreferrer">您可以在这里测试一下。

You could do a loop with .slice() to loop through in sets of 2, like this:

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);
}

Or, for a more general approach, since you want to do it with 3 as well, here's a plugin form:

$.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;
};

Then you can call it like this:

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

You can test it out here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文