Heim >Web-Frontend >js-Tutorial >Wie kann ich Textknoten mit jQuery auswählen?
Abfragen von Textknoten mit jQuery
jQuery bietet robuste Funktionalität für die DOM-Manipulation und -Traversierung. Es bietet jedoch keine einfache Methode zur Auswahl von Textknoten, die für den Zugriff auf den Textinhalt von Elementen von entscheidender Bedeutung sind.
Lösung
Um dieses Problem zu beheben, können Sie Folgendes tun Nutzen Sie die Leistungsfähigkeit der Funktionen content() und find() von jQuery. content() ruft alle untergeordneten Knoten ab, einschließlich Textknoten, während find() auf untergeordnete Elemente abzielt. Durch die Kombination dieser beiden Funktionen können Sie effektiv eine jQuery-Sammlung erhalten, die alle untergeordneten Textknoten enthält.
var getTextNodesIn = function(el) { return $(el).find(":not(iframe)").addBack().contents().filter(function() { return this.nodeType == 3; }); };
Dieser Ansatz schließt Iframe-Elemente von der Auswahl aus, um Schwachstellen bei Cross-Site-Scripting zu verhindern.
Vorbehalt für jQuery-Versionen 1.7 und früher
Für Versionen von jQuery vor 1.8 funktioniert der obige Code nicht korrekt. Um dies zu beheben:
Alternativ: Ein Pure DOM Lösung
Aus Effizienzgründen sollten Sie erwägen, eine rekursive Funktion zu verwenden, um das DOM zu durchqueren und Textknoten zu sammeln:
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; }
Diese Lösung bietet Flexibilität, indem Sie Leerzeichen-Textknoten einschließen oder ausschließen können .
Zusammenfassend lässt sich sagen, dass Sie mit diesen Methoden Textknoten innerhalb eines Elements effektiv auswählen können und so eine präzise Kontrolle über die Textmanipulation erhalten.
Das obige ist der detaillierte Inhalt vonWie kann ich Textknoten mit jQuery auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!