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