2009-03-10 2 views
6

У меня есть div, который динамически загружается двумя изображениями всегда и, возможно, одним div между ними. Ни изображения, ни div не связаны с идентификаторами (и я не могу заставить их иметь Id). Проверяя их с помощью firebug, они отображаются только как <IMG> и <DIV>. Мне нужно получить высоту этого дочернего div, когда он существует.Как использовать jquery для получения высоты динамически созданного дочернего элемента без Id

Я надеялся, что я мог бы сделать что-то вроде этого ...

$("#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> 
+0

Пожалуйста, объясните, лил более четко? «Возможна ли одна DIV между ними» означает, что возможный DIV содержит IMGS или что возможный DIV находится между IMG? Если внутренний DIV НЕ существует, вы хотите, чтобы ZERO для результирующей высоты? –

+0

div находится между двумя изображениями, я забыл поставить второе изображение там, я отредактирую это. Если div не существует, то null или 0 оба будут в порядке. Я не могу получить высоты изображений таким образом, если это дает какое-либо представление. – Carter

ответ

1

Ваш первый будет работать, если ваш селектор в порядке. Попробуйте следующее и посмотрите, что вы получите:

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

Если вы не получите розовый фон, где можно было бы ожидать, исправить ваш селектор, и он будет работать с высоты-заявления, а также.

6

, чтобы получить индексированный элемент JQuery, используйте eq() функцию:

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

или

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

или

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

С благодарностью $ ($ ("# parentDiv> DIV") [0]). Height(); о ближайшем я получил. Он возвращает неожиданный результат (664, он не должен быть таким большим). Мне придется поиграть с ним. – Carter

+0

проблема также может заключаться в том, что вы используете абсолютное позиционирование для изображения, попробуйте установить его на что-то еще и посмотреть, высока ли ваша высота. – cobbal

+0

Думаю, вы можете быть правы. Однако этот код генерируется автоматически. Я могу переместить div вокруг этого кода там, вокруг которого меняются вещи, но я не могу изменить какой-либо код, который я разместил. – Carter

0

Попробуйте

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

Это должно сделать трюк

2

Просто, чтобы добавить ко всем другим способам делать это:

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