Heim > Web-Frontend > js-Tutorial > Wie kann ich Textknoten mit jQuery auswählen?

Wie kann ich Textknoten mit jQuery auswählen?

Patricia Arquette
Freigeben: 2024-12-21 13:44:09
Original
597 Leute haben es durchsucht

How Can I Select Text Nodes with jQuery?

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;
    });
};
Nach dem Login kopieren

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:

  • Ersetzen Sie addBack() durch andSelf().
  • Beachten Sie, dass andSelf() in jQuery 1.8 und höher jetzt zugunsten von addBack() veraltet ist.

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage