【问题标题】:jQuery: add elements until a particular height is reachedjQuery:添加元素直到达到特定高度
【发布时间】:2012-02-05 00:18:03
【问题描述】:

我在左边有一个专栏,里面有几篇文章。这个高度是动态的,会根据发布的内容而变化。我在右边有一列通常较短。我正在拉 3 个大元素,然后再拉 5 个小元素,我想用额外的元素填充右列,直到它接近左侧列的高度。

所以我拉出所有大元素 (3) 并假设它比左边短。然后我拉另外 5 个附加一个类来隐藏它们(对于那些没有 JS 的)。现在我想遍历这 5 个元素并继续添加,直到我不能再添加而不使该列长于左侧的列。到目前为止,这是我所拥有的:

var hLeft = $('#home-col-left').outerHeight();
var hRight = $('#home-col-right').outerHeight();
var hRunning = hChecking = 0;

$('#home-col-right').children().each( function () {
    hChecking = hRunning + 60;
    if (hChecking < hLeft) $(this).removeClass('hidden');   
    hRunning = hRunning + $(this).outerHeight();
})

问题是我无法在元素隐藏时检查它的高度,所以我使用 hChecking 变量假设新元素的高度约为 60 像素。这并不理想,因为它们可能比这更少或更多。

有什么方法可以让它工作,同时仍然允许为没有 JS 的人隐藏元素?谢谢!

【问题讨论】:

  • 为什么不简单地将右列高度设置为等于左列然后overflow-y:hidden呢?
  • 正在添加的框会改变高度并且它们是文本,所以如果我将溢出设置为隐藏,它可能会删除一些文本。

标签: jquery height


【解决方案1】:

这行得通:

var containerDiv = $('#someElement');
while( containerDiv.height() < 500 ){
    $('<p>Test</p>').appendTo(containerDiv);
}

【讨论】:

  • 您可能需要考虑缓存$('#someElement') jQuery 对象。
猜你喜欢
  • 1970-01-01
  • 2013-04-21
  • 2011-06-10
  • 2017-12-24
  • 2023-03-15
  • 2016-03-04
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
相关资源
最近更新 更多