首頁 > web前端 > js教程 > 如何使用 jQuery 或純 JavaScript 有效率地選擇元素內的文字節點?

如何使用 jQuery 或純 JavaScript 有效率地選擇元素內的文字節點?

Patricia Arquette
發布: 2024-12-16 12:32:11
原創
750 人瀏覽過

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

使用 jQuery 選擇文字節點

在 jQuery 中選擇元素內的文字節點可能是一項具有挑戰性的任務。幸運的是,有多種方法可以實現這一點。

方法 1:結合 Contents() 和 Find()

jQuery 沒有提供專門的選擇函數文字節點。但是,解決方法涉及利用contents()方法,該方法檢索包括文字節點的子節點,並將其與find()方法結合使用,該方法選擇後代元素但排除文字節點。

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

注意: 對於1.7 之前的jQuery 版本,將addBack() 替換為andSelf(),對於1.8 或更高版本,使用addBack().

方法2:純DOM解決方案

如果您喜歡更有效率的解決方案,可以採用非 jQuery 方法。這涉及遍歷 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;
}
登入後複製

用法範例

兩種方法都允許您擷取指定元素內的所有文字節點。

var textNodes = getTextNodesIn(el);
登入後複製

透過自訂includeWhitespaceNodes參數,可以選擇是否留白文字節點包含在結果中。

以上是如何使用 jQuery 或純 JavaScript 有效率地選擇元素內的文字節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板