Heim >Web-Frontend >js-Tutorial >Wie kann ich mit jQuery oder einem Nicht-jQuery-Ansatz effizient alle abgeleiteten Textknoten eines Elements abrufen?

Wie kann ich mit jQuery oder einem Nicht-jQuery-Ansatz effizient alle abgeleiteten Textknoten eines Elements abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 19:41:111010Durchsuche

How Can I Efficiently Retrieve All Descendant Text Nodes of an Element Using jQuery or a Non-jQuery Approach?

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!

Stellungnahme:
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