J'ai besoin de mettre en œuvre la fonctionnalité de JQuery's prevuntil () code>
Méthode à Vanilla JavaScript.
J'ai plusieurs J'essaie d'utiliser un événement code> onclick code> pour trouver le Comment puis-je atteindre cela? p> p>
event.target code> 's code> code> jusqu'à ce que em> un certain critère est atteint (par exemple, Une correspondance de nom de classe) puis arrêtez-vous. P>
7 Réponses :
Il y a une propriété précédente dans le HTML DOM P>
Voici une référence p>
http://reference.sitepoint.com/javascript/node/previoussibles < / p>
La propriété Précédent code> est une référence à un nœud DOM et non à une fonction.
Je comprends ça complètement. Mais avec une certaine itération simple, vous pouvez l'utiliser pour trouver l'élément précédent qui correspond à ses conditions.
Juste jeter un coup d'oeil à Comment JQuery fait-il .
dir: function( elem, dir, until ) { var matched = [], cur = elem[ dir ]; while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { if ( cur.nodeType === 1 ) { matched.push( cur ); } cur = cur[dir]; } return matched; },
Utilisez
NODELIST NODELIST POUR TAILLER COULATION AVEC .children code> en combinaison avec
.parentnode code>. Ensuite, filtrez le nodéliste code> code>, après la convertir en une matrice:
1 commentaires
[]. SLICE.CALL (NL) CODE>? Nice
:) code>
Exemple fort>
Utilisation de précédentselementsibling:
Cet élément .Previousibling.classname code> est problématique. Si aucun frère antérieur a la classe souhaitée,
élément.previousikeding code> retournera éventuellement renvoyer
null code>, donc
element.previoussikeding.classname "/ code> lancera une erreur.
C'était afin d'empêcher une boucle infinie! Je rigole. J'ai mis à jour
Merci, gars avec un nom long.
Que diriez-vous de cela:
while ( node = node.previousElementSibling ) { if ( ( ' ' + node.className + ' ' ).indexOf( 'foo' ) !== -1 ) { // found; do your thing break; } }
Voulez-vous être trompé? Puisque je ne vous tromperai pas, je ne peux pas répondre à votre question parce que vous m'avez demandé de ne pas le faire.
@Wayne Non, je n'aime pas être trompé. Je ne vous ai pas demandé de ne pas répondre à ma question. S'il vous plaît répondez-y! Et qu'est-ce que j'ai demandé? Je pensais avoir répondu à une question, je n'ai pas demandé à un.
Désolé malentendu de ma part. Je pensais que tu ne me dis pas que ça ne marche pas dans IE8 littéralement ... pas que tu saches déjà.
Vous pouvez utiliser bonne chance. P> p> index de code> pour déterminer si l'index des frères et sœurs est inférieur à l'index de l'élément cible:
@glowcoder: personnellement, je trouve qu'il est intéressant de savoir ce que JQuery est en fait faire i>.
@PIMVDB, jQuery est open source, n'hésitez pas à consulter son code source si vous êtes intéressé par ce qui est-ce que cela fait et surtout comment i> est-ce que c'est le faire.
@Darin Dimitrov: Je sais que je veux dire qu'il n'y a rien de mal à demander ce qui se passe dans les coulisses.
@PIMVDB, non, il n'y a rien de mal sûr.
Je ne peux pas utiliser jQuery dans l'environnement que je suis en cours d'exécution.