Sélection de nœuds de texte avec jQuery
Sélectionner des nœuds de texte descendants d'un élément avec jQuery demande un peu de créativité. Bien que jQuery ne propose pas de fonction spécifique pour cette tâche, il est possible de combiner les méthodes contents() et find() pour obtenir le résultat souhaité.
Solution jQuery
var getTextNodesIn = function(el) { return $(el).find(":not(iframe)").addBack().contents().filter(function() { return this.nodeType == 3; }); }; getTextNodesIn(el);
Ce code rassemble les nœuds enfants, y compris les nœuds de texte, à l'aide de contents(). Il isole ensuite les éléments descendants et les nœuds de texte à l'aide de find(). Notez que cette solution nécessite un traitement particulier pour les éléments iframe.
Solution JavaScript pure
Si vous préférez une approche JavaScript pure, la fonction suivante peut être utilisée :
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; } getTextNodesIn(el);
Cette fonction parcourt récursivement l'arborescence DOM, identifiant les nœuds de texte en fonction de leur type de nœud. Il permet l'inclusion de nœuds d'espacement en passant un paramètre.
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!