如何使用jQuery获取没有Id的动态创建子元素的高度?

6

我有一个div,它动态加载两个图像,并可能在中间有一个div。这些图片和div都没有与之关联的id(我不能让它们有id)。使用firebug检查它们时,它们只显示为<IMG><DIV>。当这个子div存在时,我需要获取它的高度。

我希望我可以像这样做...

$("#parentDiv > DIV").height();

或者这样...

$("#parentDiv > DIV")[0].height();

由于jquery $返回一个数组,第二个会导致JavaScript错误,所以我知道那里有问题。但我认为这些代码应该很接近正确的。你有什么想法吗?

编辑:以下是我正在使用的HTML代码。

<DIV id="parentDiv" name="parentDiv">
    <IMG style="DISPLAY: block; VERTICAL-ALIGN: bottom; CURSOR: pointer" height="17" src="..." />

    <!-- this div may or may not be here -->
    <DIV style="DISPLAY: block; BACKGROUND-IMAGE: url(...); WIDTH: 16px; CURSOR: pointer; BACKGROUND-REPEAT: repeat-y; POSITION: relative; HEIGHT: 144px; outline: none">
        <DIV style="LEFT: 0px; OVERFLOW: hidden; WIDTH: 16px; POSITION: absolute; TOP: 128px; HEIGHT: 8px">
             <IMG style="LEFT: 0px; POSITION: absolute; TOP: 0px" height="8" src="..." />
        </DIV>
    </DIV>

    <IMG style="DISPLAY: block; VERTICAL-ALIGN: bottom; CURSOR: pointer" height="17" src="..." />
</DIV>

请再解释清楚一些?'可能在中间有一个DIV'是指可能的DIV包含IMGS还是可能的DIV在IMG之间?如果内部DIV不存在,您希望结果高度为零吗? - Scott Evernden
div在两张图片之间,我忘记把第二张图片放上去了,我会编辑的。如果div不存在,null或0都可以。如果这能提供任何帮助,我也无法以这种方式获取图像的高度。 - Carter
4个回答

6
要获取索引化的jQuery元素,请使用eq()函数:
$("#parentDiv > DIV").eq(0).height();

或者

$($("#parentDiv > DIV")[0]).height();

或者

$("#parentDiv > DIV:eq(0)").height();

感谢$($("#parentDiv > DIV")[0]).height();这大概是我得到的最接近的结果了。不过它返回了一个意外的结果(664,它不应该那么大)。我需要进一步测试。 - Carter
问题也可能是您对图像使用了绝对定位,请尝试将其设置为其他值,看看高度是否更合理。 - cobbal
我认为你可能是对的。然而,那段代码是自动生成的。我可以移动围绕着那段代码的div,但我不能改变我发布的任何代码。 - Carter

2

除了其他的方法,我还想补充一下:

$("#parentDiv > div:first").height();

1

你的第一个代码应该可以工作,只要你的选择器没问题。尝试以下代码并查看结果:

$("#parentDiv > DIV").css("background", "pink");

如果您在预期的位置没有获得粉色背景,请修复您的选择器,这样它也将与高度声明一起工作。

0

尝试

$($("#parentDiv > div")[0]).height();

应该就可以了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接