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; }); };
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 :
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; }
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!