2010-03-29 52 views
2

之前,未来两种元素的元素我有看起来类似这样的标记:jQuery的:如何找到其当前元素

<h3>Paragraf3-dummytext</h3> 
<p> 
<a name="paragraf3"> 
Quisque id odio. Praesent venenatis metus at tortor pulvinar varius. Lorem ipsum dolor sit 
</a> 
</p> 

我想要做的是找到所有“A”标签与“名'属性并找到该锚的'h3'标签;即时尝试这样做:

var paragraf = []; 
var paragrafheading = []; 
$('a[name]').each(function() { 
paragraf.push($(this).attr('name')); 
paragrafheading.push($(this).prev().text()); 

但它不工作,因为有一个'p'标签周围的文字。

回答

1

你可以这样做:

paragrafheading.push($(this).parent().prev().text()); 

如果总有不在身边的一个段落,或者你不知道锚多少家长能在H3之前有,你可以做这样的事情:

paragrafheading.push($(this).closest('> h3').find('> h3').text()); 
+0

这工作完美无瑕!非常感谢! – ilkin 2010-03-29 09:40:53

+0

您的第二个解决方案很好,直到我在'a'标签周围放置'b'标签。有什么建议么? – ilkin 2010-03-29 11:24:37

0

不知道这是不是最好的方法,但是你可以直接在h3上做each(),直到找到包含你想要的'a'标签的那个?

0
paragrafheading.push($(this).parents('p')[0].prevAll('h3')[0].text()); 

这样做,这样意味着,即使你仍然能够得到多少段等始祖H3元素regardles是前DOM树在未来结构的变化一个标签

+0

h3不是元素的直接父项,因此这不起作用。 – 2010-03-29 09:35:49

+0

啊耶,好点!错读了html。回答编辑 – 2010-03-29 09:37:22