2012-04-11 58 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

所以過濾....它的工作? – 2012-04-11 22:11:17

+0

@MikeRobinson。不,它不是...... :)閱讀我的答案。 – gdoron 2012-04-11 22:23:15

回答

4

prev()給你只有「緊挨着兄弟姐妹」
prevAll給你「所有兄弟姐妹」

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

而在ID刪除#

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

LIVE DEMO

文檔:

prevAll

描述:獲取匹配元素集合中每個元素的所有前面的同級元素,可選地通過選擇器進行過濾。

prev

說明:獲取所述緊接在前的同胞中匹配的元素集合中的每個元素的,任選由一個選擇器

+0

感謝gdoron,我當時並不那麼... :-) – 2012-04-11 22:24:13

+1

@Jk_。我甚至會說你接近... :) – gdoron 2012-04-11 22:25:14

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/ – 2012-04-11 22:18:27