jquery:如何找到在当前元素之前出现2个元素的元素

我有一个看起来像这样的标记:

Paragraf3-dummytext

Quisque id odio. Praesent venenatis metus at tortor pulvinar varius. Lorem ipsum dolor sit

我想要做的是找到所有带有’name’属性的’a’标签,找到该锚点的’h3’标签; 我想这样做:

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

但它不起作用,因为文本周围有一个’p’标签。

你可以做:

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

如果a周围并不总是段落,或者你不知道锚点在h3之前可以有多少父母,你可以这样做:

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

不确定这是不是最好的方法,但是你可以在h3上做每个(),直到找到包含你想要的’a’标签的那个吗?

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

这样做意味着即使结构在将来发生变化,你仍然可以获得第一个祖先h3元素在a标签之前的dom树中有多少个段落等等。