Heim > Web-Frontend > js-Tutorial > Wie kann ich mit jQuery effizient alle Textknoten innerhalb eines Elements auswählen?

Wie kann ich mit jQuery effizient alle Textknoten innerhalb eines Elements auswählen?

Susan Sarandon
Freigeben: 2024-12-23 13:51:19
Original
650 Leute haben es durchsucht

How Can I Efficiently Select All Text Nodes Within an Element Using jQuery?

Auswählen von Textknoten mit jQuery

Das Abrufen aller untergeordneten Textknoten eines Elements als jQuery-Sammlung kann eine komplexe Aufgabe sein. Da jQuery hierfür keine dedizierte Funktion hat, ist eine Kombination von Methoden erforderlich.

Die Lösung besteht darin, die Funktion content() zu verwenden, die untergeordnete Knoten (einschließlich Textknoten) abruft, und die Funktion find(), die Wählt alle untergeordneten Elemente aus (außer Textknoten). Durch Zusammenführen dieser Ergebnisse können alle Textknoten innerhalb des angegebenen Elements erhalten werden.

var getTextNodesIn = function(el) {
    return $(el).find(":not(iframe)").addBack().contents().filter(function() {
        return this.nodeType == 3;
    });
};

getTextNodesIn(el);
Nach dem Login kopieren

Überlegungen:

  • Dieser Ansatz ist im Vergleich zum reinen möglicherweise ineffizient DOM-Methoden.
  • Eine Problemumgehung ist erforderlich, da jQuery den Inhalt überlädt() Funktion.
  • Nicht-jQuery-Lösungen wie die folgenden bieten eine effizientere Alternative:
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);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit jQuery effizient alle Textknoten innerhalb eines Elements auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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