2010-06-06 2 views
4

J'essaie d'utiliser jQuery pour obtenir tous les paragraphes avant la première balise h2 dans mon contenu. Voici le code que j'utilise:jQuery prevAll affichant le texte dans la commande vers l'arrière

$(".content").find("h2:first").prevAll().text() 

Qui saisit le contenu, bien qu'il affiche à l'envers. Exemple de contenu:

<div class="content"> 
    <p>paragraph 1</p> 
    <p>paragraph 2</p> 
    <p>paragraph 3</p> 
    <h2>First h2 tag</h2> 
    <p>paragraph 4</p> 
    <p>paragraph 5</p> 
    <p>paragraph 6</p> 
    <h2>Second h2 tag</h2> 
</div> 

Le code ci-dessus est la sortie:

<p>paragraph 3</p> 
<p>paragraph 2</p> 
<p>paragraph 1</p> 

Est-il possible d'inverser cela, il est donc dans le bon ordre? Je l'ai essayé d'utiliser nextAll en utilisant des codes différents, mais il semble saisir tout mon contenu, ou ne pas du tout lol

Répondre

7

J'sais si cela devrait fonctionner:

Array.prototype.reverse.call($(".content").find("h2:first").prevAll()); 
+0

ne pas oublier le .text() à la fin (en dehors de l'appel inverse). Vous devez le faire au lieu de simplement appeler reverse() car l'objet résultat jquery ne conserve pas toutes les méthodes du tableau javascript natif. – colinmarc

2

Nous pouvons simplement faire:

$( $(".content h2:first").prevAll().get().reverse() ).text(); 

note:[].reverse() est un tableau javascript (ici avec des éléments DOM) et vous avez besoin d'en faire un tableau avec jQuery emballage $(...) comme ci-dessus; Par exemple: $([].reverse())

Questions connexes