JQuery更改所有元素文本

Shi*_*TCo 4 regex jquery replace

我需要jquery来改变所有页面中的数字.例如,我想要改变1比1,所以我尝试这样:

$("*").each(function(){
    $(this).html(  $(this).html().replace(1,"?")  );
})
Run Code Online (Sandbox Code Playgroud)

但这也将改变css规则和属性.是否有任何技巧可以逃脱css和属性?

Dav*_*ang 9

这不是jQuery自然适合的工作.而不是让jQuery获取所有元素的平面列表,而是自己递归遍历DOM树,搜索文本节点以执行替换.

function recursiveReplace(node) {
    if (node.nodeType == 3) { // text node
        node.nodeValue = node.nodeValue.replace("1", "?");
    } else if (node.nodeType == 1) { // element
        $(node).contents().each(function () {
            recursiveReplace(this);
        });
    }
}

recursiveReplace(document.body);
Run Code Online (Sandbox Code Playgroud)

这里看到它.