jQuery根据另一个元素的高度动态改变元素的高度

Posted

技术标签:

【中文标题】jQuery根据另一个元素的高度动态改变元素的高度【英文标题】:jQuery dynamically change height of element according to the height of another 【发布时间】:2011-08-19 00:17:03 【问题描述】:

我知道这个问题已经得到解答,但我仍然需要针对我的具体情况的帮助

我有

<ul>
<li>blah blah</li>
<li>blah blah blah</li>
</ul>

我已经设法在每个 li 使用后插入一个 div

$('<div class="shadow-hide"></div>') .appendTo('div#main nav.left ul li');

所以现在的html

<ul>
  <li>blah blah</li>
  <div class='shadow-hide'></div>
  <li>blah blah blah</li>
  <div class='shadow-hide'></div>
</ul>

但是如何设置 div 的高度以匹配它之前的 li 的高度?

到目前为止,这是我的尝试,但我猜它只是获得了第一个 li 的高度:

$('<div class="shadow-hide"></div>') .appendTo('div#main nav.left ul li');
    var liHeight = $("div#main nav.left ul li").height();
    $('div.shadow-hide').css('height', liHeight);

【问题讨论】:

附带说明,您不能将 div 元素嵌套在 ul 内。 哈+1,我只是为它写了一些脚本,甚至没有注意到他已经这样做了。 @numbers - 你也得到了 +1 :) 好吧,示例标记在 li 之外有 div,但代码(包括原始的非工作示例)将其附加在里面,所以我想这一切都很好:-P跨度> 谢谢大家,非常感谢,当然你们都值得加分:) 【参考方案1】:

也许:

$('.shadow-hide').height(function() 
   return $(this).prev('li').height();
);

或者更符合您的实际用例:

$('#main nav.left ul li').each(function(i, el) 
  var $el = $(el), height = $el.height();
  $('<div class="shadow-hide" />').height(height).appendTo($el);
);

编辑:如 cmets 中所述,您不能将 div 直接嵌套在列表中,因此您可能需要重新考虑如何设置它的样式,也许用列表项替换“shadow-hide” div。

【讨论】:

谢谢,是的,第二段代码有效:) 我只需要更改它以使其包含边距,我想我可以处理。它比我想象的要复杂得多!我还有很多东西要学,非常感谢 总是有outerHeight 而不是简单的height【参考方案2】:

$('&lt;div class="shadow-hide"&gt;&lt;/div&gt;') .appendTo('div#main nav.left ul li'); 这一行将在每个 li 中附加 div。但是您显示的标记是错误的,div 应该放在每个 li 内。

现在您可以尝试下面的脚本来设置每个 li 内的 shadow-hide div 的高度。

$("div#main nav.left ul li").each(function()
   $(this).find(".shadow-hide").height($(this).height());
):;

【讨论】:

是的,很好,我会尽量将 div 保留在 li 中,谢谢【参考方案3】:

两者都可以使用.append(function(index, html) 简洁高效地完成,我认为在这种情况下更有意义:

var div = '<div class="shadow-hide">Test</div>';

$("ul li").append(function(index, html) 
    return html + ($(div).height($(this).height()).html());
);

Demo.

【讨论】:

以上是关于jQuery根据另一个元素的高度动态改变元素的高度的主要内容,如果未能解决你的问题,请参考以下文章

使用jQuery动态调整iframe高度,以及jQuery对dom元素的监听

jQuery 如何获取到隐藏元素的高度?或者在dom元素可见性改变时能触发个事件也行。

使用jquery动态添加表格的行之后,如何获取表格高度?

如何使用 JQuery 动态获取 Body 元素高度

如何根据元素高度动态调整 iframe 高度?

如何获取 javascript/jQuery 中最高子元素的高度?