Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Memilih Nod Teks dengan Cekap dalam Elemen Menggunakan jQuery atau JavaScript Tulen?

Bagaimanakah Saya Boleh Memilih Nod Teks dengan Cekap dalam Elemen Menggunakan jQuery atau JavaScript Tulen?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 12:32:11750semak imbas

How Can I Efficiently Select Text Nodes within an Element Using jQuery or Pure JavaScript?

Memilih Nod Teks dengan jQuery

Memilih nod teks dalam elemen boleh menjadi tugas yang mencabar dalam jQuery. Nasib baik, terdapat pelbagai pendekatan yang tersedia untuk mencapai matlamat ini.

Pendekatan 1: Menggabungkan Kandungan() dan Cari()

jQuery tidak menyediakan fungsi khusus untuk memilih nod teks. Walau bagaimanapun, penyelesaian melibatkan penggunaan kaedah contents(), yang mendapatkan semula nod anak termasuk nod teks dan menggabungkannya dengan kaedah find(), yang memilih elemen turunan tetapi mengecualikan nod teks.

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

Nota: Untuk versi jQuery sebelum 1.7, gantikan addBack() dengan andSelf(), dan untuk versi 1.8 atau lebih baru, gunakan addBack().

Pendekatan 2: Penyelesaian DOM Tulen

Jika anda lebih suka penyelesaian yang lebih cekap, kaedah bukan jQuery boleh digunakan. Ini melibatkan fungsi rekursif yang merentasi pepohon DOM:

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;
}

Contoh Penggunaan

Kedua-dua pendekatan membolehkan anda mendapatkan semula semua nod teks dalam elemen yang ditentukan.

var textNodes = getTextNodesIn(el);

Dengan menyesuaikan parameter includeWhitespaceNodes, anda boleh memilih sama ada ruang kosong atau tidak nod teks disertakan dalam hasilnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Nod Teks dengan Cekap dalam Elemen Menggunakan jQuery atau JavaScript Tulen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn