Textknoten mit jQuery abrufen
Die Aufgabe, alle abgeleiteten Textknoten eines Elements als jQuery-Sammlung abzurufen, kann eine Herausforderung darstellen. Während jQuery für diesen speziellen Zweck keine dedizierte Funktion hat, können wir dieses Ziel erreichen, indem wir die Funktionalitäten von contents() und find() kombinieren.
jQuery-Ansatz:
var getTextNodesIn = function(el) { return $(el).find(":not(iframe)").addBack().contents().filter(function() { return this.nodeType == 3; }); }; getTextNodesIn(el);
Dieser Ansatz ruft alle untergeordneten Textknoten ab, außer iframes.
Nicht-jQuery-Ansatz:
Für eine effizientere Lösung kann eine rekursive DOM-basierte Funktion verwendet werden:
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);
Diese Funktion kann Nicht-jQuery-Elemente verarbeiten und bietet so eine bessere Kontrolle über die Einbeziehung von Leerzeichen-Textknoten.
Das obige ist der detaillierte Inhalt vonWie kann ich mit jQuery oder einem Nicht-jQuery-Ansatz effizient alle abgeleiteten Textknoten eines Elements abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!