Rechercher un élément dans le code HTML de la chaîne
Est-il possible de trouver un élément dans une chaîne de HTML plutôt que de le DOM? Exemple,
var html = "<div><span class='find-me'></span></div>"
$("html").find(".find-me").remove();
C'est possible, mais pour les cas compliqués à trouver et à manipuler, vous auriez effectivement être l'écriture d'un analyseur HTML vous-même. Si vous êtes simplement à la recherche d'un id unique ou de classe, une expression régulière serait probablement faire l'affaire. Si vous tentez de supprimer un nœud qui a des enfants, il devient beaucoup plus compliqué, et vous pouvez aussi bien regarder dans le XML/HTML parser les bibliothèques.
jQuery analyse le code html, la seule "erreur" dans l'extrait de code ci-dessus est qu'il est à l'aide de la chaîne de
pas difficile ou difficile, d'où tenez-vous cette idée?
J'ai lu la question à la valeur nominale, et supposé qu'il voulait utiliser pure manipulation de la chaîne, plutôt que de lire l'intention de les manipuler à l'aide de jQuery. Je voudrais aussi supposé que la source a été pseudocode, plutôt que de JavaScript. Je suppose que JQuery peut lui-même être considéré comme un analyseur HTML 😉
jQuery analyse le code html, la seule "erreur" dans l'extrait de code ci-dessus est qu'il est à l'aide de la chaîne de
"html"
et par correspondance à l'élément html au lieu d'utiliser son html
variable comme argument de la fonction jQuery. Aussi il n'est pas nécessaire d'écrire un DOM parser que l'on peut utiliser le navigateur pour analyser la chaîne...pas difficile ou difficile, d'où tenez-vous cette idée?
J'ai lu la question à la valeur nominale, et supposé qu'il voulait utiliser pure manipulation de la chaîne, plutôt que de lire l'intention de les manipuler à l'aide de jQuery. Je voudrais aussi supposé que la source a été pseudocode, plutôt que de JavaScript. Je suppose que JQuery peut lui-même être considéré comme un analyseur HTML 😉
OriginalL'auteur | 2015-02-25
Vous devez vous connecter pour publier un commentaire.
Vous êtes très proche, enveloppez votre variable dans
$()
Si vous voulez revenir à la chaîne peut faire quelque chose comme:
$(html)
crée un dom structure (mais pas dans la page de l'arborescence du dom). Je suis sous l'impression que l'OP adresses une recherche dans la représentation lexicale seul, sans analyse.Je pense que votre interprétation est erronée. Vous pouvez manipuler des fragments de html à l'extérieur de la DOM aussi, et cela peut être facilement retourné à la chaîne si nécessaire
Je veux trouver l'élément à l'intérieur de la chaîne, et s'il n'existe pas de faire quelque chose. if( $div.find(".trouvez-moi").la longueur ) {}. Mais il ne semble pas fonctionner.
dépendra de l'existence d'un ancêtre avec cette classe, vous pouvez aussi essayer
filter()
si c'est au niveau de la racineOui, vous pouvez utiliser n'importe quelle méthode jQuery sur elle tout de même que si c'est dans les DOM. Par exemple, si il y avait une entrée et vous avez voulu que la valeur peut utiliser
val()
pour l'obtenir. Ou utiliserdata()
ouattr()
ouaddClass()
etcOriginalL'auteur charlietfl
Elle est, mais elle est sujette à des erreurs et peu fiables. Envisager
<div><span class='find-me'>Devious web designer writes class='find-me' inside a text segment</span></div>
- certes artificiel, mais à mon humble avis d'illustration.Vous êtes à la recherche d'une structure d'information semi-structurée de contenu. Pourquoi voudriez-vous faire de votre vie plus difficile par la recherche dans _un_structured contenu ?
Je l'ai fait aussi, mais sans réellement de parser le html (ie. en travaillant sur le lexcalisation seulement), il est un vrai cauchemar.
OriginalL'auteur collapsar
Si le HTML est une chaîne de caractères, vous pouvez simplement utiliser javascript pour traiter une chaîne d'utiliser la fonction remplacer, quelque chose comme:
Dans ce cas, après le remplacer, html serait:
Voici la Violon
replace(/find-me/g, '')
vous face au problème que les noms de classes dans les nœuds de texte du code html sera remplacé.Je n'ai pas vraiment envie de supprimer l'élément, ne sais pas pourquoi j'ai ajouté supprimer. Je veux exécuter du code si l'élément n'existe pas dans le code HTML de la chaîne.
Problème similaire.Vous ne savez pas si vous correspondre à un événement dans les nœuds de texte ou dans une balise d'ouverture.
si @Shabbb est en se référant à ce qu'une chaîne uniquement (et non l'élément DOM), alors ce serait le travail (en remplacement de la première occurrence de la chaîne). Mis à jour le violon à l'aide indexof pour déterminer si la chaîne existe jsfiddle.net/5cph5tox/1
OriginalL'auteur danboh
Vous pourriez analyser la chaîne avec DOMParser();
OriginalL'auteur jgybrooklyn