Solution DOM / pure JavaScript pour l'implémentation de jQuery.closest ()?
Voici le balisage, je suis en train de requête. Donc, compte tenu de la balise:
<table class="non-unique-identifier table">
<tr><td><div id="unique-identifier"></div></td></tr>
</table>
Je suis d'interrogation pour #unique identificateur:
var myDiv = document.getElementById('#unique-identifier');
Je suis d'essayer ensuite de sélectionner la table. Le problème est que je veux faire le code non fragiles donc je n'ai pas besoin de le faire:
var myDiv = document.getElementById('#unique-identifier'),
myTable = myDiv.parentNode.parentNode.parentNode.parentNode;
Ma question
Est-il actuellement un DOM de la mise en œuvre de l'jQuery équivalent de $().plus proche (le) ? Le plus proche de la mise en œuvre efficace sans boucles for imbriquées serait préférable.
Limitations
Je suis tenu de ne pas utiliser jQuery ou grésillement pour ce problème particulier ou d'introduire de nouvelles bibliothèques. Le code est assez ancien. Ainsi, c'est la raison de ces limitations et de l'existence de <tables>
.
source d'informationauteur chrisjlee
Vous devez vous connecter pour publier un commentaire.
Alternative est une fonction récursive. C'est un peu différent de la plus proche que je recherche les enfants, je ne sais pas si le plus proche.
Non dans la recherche d'enfants exemple (le plus proche):
Concis et rapide (testé avec Benchmark.js) pour la recherche l'élément le plus proche par un sélecteur css:
Prend en charge IE9+ et le reste des navigateurs, vous pouvez vous attendre à des soins.
J'ai écrit cette simple fonction dans l'un de mes Tapuscrit projets, j'ai donc utilisé querySelector sur parentNode de sorte que vous pouvez passer à la fonction
class
id
tag name
etcExemple:
Si vous voulez trouver le plus proche parent de
target
qui a.param-input
classe, vous pouvez le faire comme ceci:Pour ajouter une mise à jour de réponse, il est maintenant
Element.closest(<query_selector>)
disponibles.https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
Ce n'est pas pris en charge sur IE, mais que mozilla doc page contient du code pour un polyfill pour IE8 et IE9+.