JQuery 更改所有元素文本

标签 jquery regex replace

我需要 jquery 来更改所有页面中的数字。例如我想将 1 更改为 1,所以我尝试了以下方法:

$("*").each(function(){
    $(this).html(  $(this).html().replace(1,"۱")  );
})

但这也会改变 css 规则和属性。有没有什么技巧可以转义CSS和属性?

最佳答案

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

function recursiveReplace(node) {
    if (node.nodeType === Node.TEXT_NODE) {
        node.nodeValue = node.nodeValue.replace("1", "۱");
    } else if (node.nodeType == Node.ELEMENT_NODE) {
        $(node).contents().each(function () {
            recursiveReplace(this);
        });
    }
}

recursiveReplace(document.body);

查看实际效果 here .

关于JQuery 更改所有元素文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494259/

相关文章:

regex - 语法分析器如何忽略输入中的空格

Javascript str.replace 变量

linux - 如果列包含数字,则插入文本

javascript - 从 DIV 创建数组,然后检查相似性

javascript - 如何在文本内容周围添加 HTML 标签?

regex - Prolog 中的正则表达式

Javascript,替换为正则表达式,这种情况可以吗?

php - ajax调用返回json记录时解析错误

javascript - 使用jquery向页面链接添加参数

regex - 如何检查字符串是否只包含 A-Z、a-z 和 0-9?