Javascript jquery 1.8及更高版本,将一个div的高度设置为与另一个div相同

Javascript jquery 1.8及更高版本,将一个div的高度设置为与另一个div相同,javascript,jquery,html,css,height,Javascript,Jquery,Html,Css,Height,从Jquery 1.8开始,在获取元素的height()时进行了更改。我将CSS div height设置为auto,其中的图像通过使用%和auto命令div的高度和宽度),当窗口加载时,我使用Jquery获取元素的高度,并使其旁边的另一个div具有相同的高度。经过研究,我注意到它在CSS设置图像设置的新高度之前返回高度。1.7允许,但1.8及以上不允许。有工作要做吗。 这是css #element1{ width:80%; height:auto;} #element1 img{width

从Jquery 1.8开始,在获取元素的height()时进行了更改。我将CSS div height设置为auto,其中的图像通过使用%和auto命令div的高度和宽度),当窗口加载时,我使用Jquery获取元素的高度,并使其旁边的另一个div具有相同的高度。经过研究,我注意到它在CSS设置图像设置的新高度之前返回高度。1.7允许,但1.8及以上不允许。有工作要做吗。 这是css

 #element1{ width:80%; height:auto;}
 #element1 img{width:100%; height:auto};//this allows the image to resize with the page responsively.
jQuery

$(window).ready(
function(){
var x = $("#element").height();
alert(x); // this would return what the height was dynamically set as by the css in 1.7, but 1.8 returns a small number that i am pretty certain is just the padding added to 0px
});
希望这是有意义的,并且有人有一个解决办法。
谢谢

您的css选择器(#element1)和jquery选择器('#element')之间不匹配。首先,让它们都匹配html元素中的任何内容。您还可以将其包装在超时中,以便您的图像有时间完全加载

$( document ).ready(function() {
    setTimeout(function() {
        $('#element2').height( $('#element1').height() );
    }, 2000});
});

不要监听
$(window).load()
,它可能会暂停正确的高度分配,直到所有
资源都成功加载,你可以监听每个
上的成功加载,如果你设置了小提琴,我可以帮你更多,但是试试
.outerHeight()
.outerHeight()
是一个很好的建议;这包括高度+边框+边距+填充。另外,您可能希望将
$(window.load)包装到内部(function(){…})
而不是
$(document).ready(function(){…})。Window.load将在启动之前等待加载映像。@SetSailMedia Using
$(Window.load()
)可能是一种蛮力解决方案,因为它将在调用中的匿名函数之前等待所有资源成功加载。虽然这对小型/轻型页面的影响不太明显,但具有大量图像资源的页面可能会暂停适当的高度计算。SetSail Media,这实际上解决了问题。jQuery1.7之后发生了一些变化,导致JQuery无法等待映像加载。它可能会稍微慢一点,但在这一点上是最好的解决方案。
<div id="element1">
    <img ... />
</div>
$(function() {
    var $img = $('<img />', {
        'src': $('#element1 img').attr('src')
    });

    $img.load(function() {
        $('#element2').css('height', $('#element1').height());
    });
});