无论嵌套元素的数量多少,都可以使用javascript(jquery)查找最内层文本并替换它

Ami*_*mir 4 javascript jquery traversal

如果我有这个:

<a href="#" id="the-link"><em>any random text</em></a>
Run Code Online (Sandbox Code Playgroud)

或这个:

<a href="#" id="the-link">any random text</a>
Run Code Online (Sandbox Code Playgroud)

或这个:

<a href="#" id="the-link"><em><div id="foo"><span>any random text</span></div></em></a>
Run Code Online (Sandbox Code Playgroud)

我想捕获文本"任何随机文本",然后替换它.

我怎么能用jQuery做到这一点?如果没有jQuery,只需常规的javascript?

Tim*_*own 5

你可以递归地做到这一点.这很简单:

function replaceTextNodes(node, newText) {
    if (node.nodeType == 3) {
        // Filter out text nodes that contain only whitespace
        if (!/^\s*$/.test(node.data)) {
            node.data = newText;
        }
    } else if (node.hasChildNodes()) {
        for (var i = 0, len = node.childNodes.length; i < len; ++i) {
            replaceTextNodes(node.childNodes[i], newText);
        }
    }
}

replaceTextNodes(document.getElementById("the-link"), "NEW TEXT");
Run Code Online (Sandbox Code Playgroud)