Maison > interface Web > js tutoriel > Comment puis-je sélectionner des nœuds de texte avec jQuery ?

Comment puis-je sélectionner des nœuds de texte avec jQuery ?

Patricia Arquette
Libérer: 2024-12-21 13:44:09
original
605 Les gens l'ont consulté

How Can I Select Text Nodes with jQuery?

Interrogation de nœuds de texte avec jQuery

jQuery offre des fonctionnalités robustes pour la manipulation et la traversée du DOM. Cependant, il ne fournit pas de méthode simple pour sélectionner les nœuds de texte, qui sont cruciaux pour accéder au contenu textuel des éléments.

Solution

Pour résoudre ce problème, vous pouvez exploitez la puissance des fonctions contents() et find() de jQuery. contents() récupère tous les nœuds enfants, y compris les nœuds de texte, tandis que find() cible les éléments descendants. En combinant ces deux fonctions, vous pouvez obtenir efficacement une collection jQuery contenant tous les nœuds de texte descendants.

var getTextNodesIn = function(el) {
    return $(el).find(":not(iframe)").addBack().contents().filter(function() {
        return this.nodeType == 3;
    });
};
Copier après la connexion

Cette approche exclut les éléments iframe de la sélection pour éviter les vulnérabilités de scripts intersites.

Mise en garde pour les versions 1.7 et antérieures de jQuery

Pour les versions de jQuery antérieures à 1.8, le code ci-dessus ne fonctionnera pas correctement. Pour remédier à cela :

  • Remplacez addBack() par andSelf().
  • Notez que andSelf() est désormais obsolète au profit de addBack() dans jQuery 1.8 et supérieur.

Alternative : un pur DOM Solution

Pour plus d'efficacité, envisagez d'utiliser une fonction récursive pour parcourir le DOM et collecter des nœuds de texte :

function getTextNodesIn(node, includeWhitespaceNodes) {
    var textNodes = [], nonWhitespaceMatcher = /\S/;

    function getTextNodes(node) {
        if (node.nodeType == 3) {
            if (includeWhitespaceNodes || nonWhitespaceMatcher.test(node.nodeValue)) {
                textNodes.push(node);
            }
        } else {
            for (var i = 0, len = node.childNodes.length; i < len; ++i) {
                getTextNodes(node.childNodes[i]);
            }
        }
    }

    getTextNodes(node);
    return textNodes;
}
Copier après la connexion

Cette solution offre de la flexibilité en vous permettant d'inclure ou d'exclure des nœuds de texte d'espaces. .

En conclusion, ces méthodes vous permettent de sélectionner efficacement les nœuds de texte au sein d'un élément, vous donnant ainsi un contrôle précis sur la manipulation du texte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal