Bookmark hashtags de traversée (#bookmark) en jQuery?
-
27-09-2019 - |
Question
J'ai du mal d'un déplacement signet a balise dans jquery. Plus précisément, le code HTML suivant:
<a id="comment-1"></a>
<div class="comment">
<h2 class="title"><a href="#comment-1">1st Post</a></h2>
<div class="content">
<p>this is 1st reply to the original post</p>
</div>
<div class="test">1st post second line</div>
</div>
Je suis en train de traverser à l'endroit où la classe = « title », si la page est débarqué avec un hashtag de signet dans l'URL (site.com/test.html#comment-1). Ce qui suit est mon code que je utilise pour le test:
if(window.location.hash) {
alert ($(window.location.hash).nextAll().html());
}
Il exécute bien et renvoie le code HTML approprié (<h2 class="title"><a href="#co...
)
Le problème est de savoir si j'ajoute un sélecteur à lui ($(window.location.hash).next('.title').html()
) Je reçois un résultat nul. Pourquoi cela est-il ainsi? nextAll n'est pas la fonction correcte Traversant? (Je l'ai aussi essayé trouver la prochaine + sans résultat)
Merci!
La solution
Le sélecteur de $('#comment-1')
sélectionne l'élément de <a>
. La méthode de next
regarde le nœud frère suivant de cet élément. Il n'y a pas de tel noeud avec une classe de « titre », de sorte que vous obtenez un résultat vide. Dans votre exemple, le seul noeud entre frères et soeurs de <a>
est la div class = « commentaire ». Pour trouver l'élément <h2 class="title">
, vous pouvez utiliser par exemple:.
$(window.location.hash).next().children('.title')
Autres conseils
il y a un plugin jquery pour que: http://github.com/shanbady/Jquery-ajaxBookmarkable