2012-04-11 3 views
0

Я пытаюсь найти хорошее решение, чтобы получить высоту всего элемента выше моей цели.JQuery получить высоту каждого предыдущего элемента

Итак, петля prev() функция! Любые идеи о том, как я могу справиться с этим?

<div> 
<div style="height:50px;width:100%"></div> 
<div style="height:12px;width:100%"></div> 
<div style="height:23px;width:100%"></div> 
<div style="height:56px;width:100%"></div> 
<div id="#mytarget"><p>HERE</p></div> 
</div> 

$('#mytarget').prev().each(function() { 
    alert($(this).outerHeight()); 
}); 

, и он будет стрелять ["56","23","12","50"].

+1

Так .... это работает ? –

+0

@MikeRobinson. Нет, это не ... :) прочитал мой ответ. – gdoron

ответ

4

prev() дает только «непосредственно предшествующие двойники» в то время как
prevAll дает вам «все предшествовавшие братьям и сестрам».

$('#mytarget').prevAll().each(function() { 
    alert($(this).outerHeight()); 
}); 

и удалите # в ИО:

<div id="#mytarget"> =><div id="mytarget">

LIVE DEMO

документы:

prevAll:

Описание: Получите всех предыдущих братьев и сестер каждого элемента в наборе согласованных элементов, опционально отфильтрованных селектором.

prev:

Описание: Получить непосредственно предшествующий двойников каждого элемента в наборе соответствующих элементов, необязательно фильтруют с помощью селектора

+0

Спасибо gdoron, я не был так далеко ... :-) –

+1

@Jk_. Я бы даже сказал, что вы были близки ... :) – gdoron

1

Попробуйте prevAll():

var result=[]; 
$('#mytarget').prevAll().each(function() { 
    result.push($(this).outerHeight()); 
}); 
alert(result); 

, а также изменить

<div id="#mytarget"><p>HERE</p></div> 

к:

<div id="mytarget"><p>HERE</p></div> 

Демо: http://jsfiddle.net/JkDP6/

+0

Да, я просто понимаю свою ошибку! http://jsfiddle.net/u8hd7/ –