En JQuery, comment puis-je descendre aussi loin que possible dans l'arbre HTML?
Pour la simplicité, je n'ai qu'un seul chemin descendant. p>
(associé mais bonus: comment trouver l'élément le plus profond avec plusieurs chemins descendus?) p> Je veux changer le HTML interne de la cellule Nommé Merci beaucoup! P> P>
Que voudriez-vous arriver s'il y avait deux frères et soeurs code> s dans le code>?
Je sais que votre exemple de code n'est qu'un exemple, mais je sens que je dois souligner que c'est invalide HTML car vous avez un code> et code> sans code> entre eux.
.
1
0 commentaires
1
3 commentaires
0
0 commentaires
0
2 commentaires
5
0 commentaires
0
0 commentaires
26
0 commentaires
0
0 commentaires
0
0 commentaires
2
0 commentaires
@Spudley: Merci Spudley, je l'ai réparé.
@CDHOWIE: Comportement non déterministe! Le premier ou le dernier dans la portée de la balise précédente irait bien, je chiffre le retour du dernier que vous vérifiez est probablement plus facile.
Puis-je vous demander pourquoi vous avez besoin de l'élément le plus profond? Je ne peux pas penser à un problème qui nécessiterait une telle sélection.
@galambalaz: partiellement curiosité en général, mais j'ai une interface de contenu de cellules de click-to-éditeur pour le moment. Ajout de divs au format Les propriétés de texte / débordement ont été utiles, mais l'interface me permet d'éditer le HTML DIV brut car il ne concerne que le niveau
10 Réponses :
votes
Eh bien, à partir d'une base que vous n'avez aucune idée de l'emplacement de ce nœud "le plus profond", vous pouvez faire quelque chose comme ceci: xxx pré>
puis p> xxx
serait (à l'exception des 12 bugs probablement dans mon code) serait un objet JQuery pour l'ensemble des éléments les plus profonds. p>
éditer em> - une de mes douzaines de bogues Est-ce que cela ne tient pas compte de la profondeur du (s) noeud de départ (s) - ce serait un tour pour comprendre. Peut être préférable de le refroidir afin qu'il trouve le plus profond de la liste initialement sélectionnée: p> xxx pré>
et pour obtenir le plus profond de la page que vous feriez: p >
votes
avec un seul chemin: xxx pré>
Si je gagne le temps, je vais mettre à jour ma réponse avec le code de plusieurs chemins. P> P>
sucré. Je n'étais pas au courant du mot-clé Suivant i>.
@sova - Il n'y a pas de
Suivant code> mot-clé. Ici c'est juste un nom de variable.
@sova:
Suivant code> n'est pas un mot-clé en JavaScript. Étant donné que la syntaxe sur ce site prend en charge plusieurs langues, il met parfois en évidence les mots d'autres langues.
votes
Peut-être pas le plus efficace, mais vous pourriez faire cela:
Exemple: strong> http. : //jsfiddle.net/5n3y7/ p> xxx pré> Exemple: strong> http://jsfiddle.net/5n3y7/2/ p>
ou ceci: p>
(les résultats Dans l'exemple semblent être à différents niveaux, mais c'est parce que le navigateur insère l'insertion du code>.) em> p> xxx pré> p>
votes
Ce n'est pas spécifique à JQuery, mais cette solution récursive peut être modifiée pour faire ce que vous voulez. XXX PRE> P>
Veuillez expliquer pourquoi votre instruction de commutation n'a qu'un seul cas
Notez mon commentaire sur "Être ajusté", auquel cas vous voudrez peut-être faire d'autres choses, par exemple gérer les nœuds de texte, etc. Certes, il semble un peu bizarre tel qu'il est ... mais j'utilise généralement ce formulaire pour marcher l'arbre DOM. Je vais mettre un commentaire là-bas pour le rendre clair ...
votes
Je ferais cela via une seule fonction récursive: xxx pré> p>
votes
La première chose que je ferais est de gérer un Profond First Search (DFS) et Gardez une trace du niveau que j'étais à chaque noeud dans le DOM. P>
Pour sauvegarder avoir à effectuer un fichier DF complet chaque fois que vous souhaitez modifier quelque chose (en supposant que vous souhaitez le faire plusieurs fois), vous pouvez marquer chaque nœud DOM avec son niveau dans l'arborescence car la recherche est effectuée. . (Encore une fois, vous pouvez peut-être faire ce niveau de marquage au cours de la génération de la table?) Une fois la recherche terminée et que vous avez déterminé le nœud le plus profond, gardez une référence à ce nœud. P>
À partir de ce point, vous devriez être capable de mettre à jour rapidement ce que le nœud est au niveau le plus profond à tout moment. P>
votes
Pour un chemin unique, trouver simplement l'élément qui n'a pas de noeuds d'enfants: xxx pré>
ou, dans votre cas plus spécifique
$ ('# cellule0 *: non (: a ("*")) ')'); code> p>
pour plusieurs chemins - Quoi qu'il y ait plusieurs nœuds également imbriqués? Cette solution vous donnera une matrice de tous les nœuds avec le plus grand nombre d'ancêtres. P> xxx pré>
à nouveau, dans votre situation, vous voulez probablement arriver aux éléments les plus profonds des cellules de table, de sorte que vous "Ret retour à une doublure: p> xxx pré>
- cela retournera un objet JQuery contenant tous les nœuds enfants les plus internes de chaque cellule de votre table. P> p>
votes
Je pense que c'est un échantillon le plus court pour vous:
votes
très tard à la fête, mais voici ma solution générique.
votes
Cette question a une réponse simple et bonne quand pour JQuery. Cependant, je cherchais une solution élégante sans elle. Puisque
: a code> n'est pas pris en charge dans aucun navigateur, je suis arrivé avec celui-ci ici.
Articles qui pourrait vous intéresser :
Impossible d'importer le module "@ angular / material"Interaction profonde avec break and catch
Utilisation de node.js comment renommer tous les fichiers d'un dossier
Google Chrome Uncaught (promis) DOMException lors de la lecture AUDIO