我需要jquery来更改所有页面中的数字。例如,我想改变1比1,所以我尝试这样:
$("*").each(function(){
$(this).html( $(this).html().replace(1,"۱") );
})
但这也将改变css规则和属性。有什么技巧可以逃脱css和属性吗?
答案 0 :(得分: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);
在行动here中查看。
答案 1 :(得分:2)
试试这个:
$("body *").each(function() {
if ( this.childElementCount > 0 ) { return; }
$(this).text(function(i, v) { return v.replace('1','۱'); });
});
更新:不起作用...
答案 2 :(得分:1)
如果没有看到代码的实际示例,很难提供一个好的答案,但我会尽力而为。
这是我要做的。我会将所有页码都包含在带有特定ID的标签中,例如......
<span class="pageNumber">1</span>
...
<span class="pageNumber">n</span>
然后是jQuery ......
$.each($("span#pageNumber"), function()) {
$(this).text('value');
});
您可以增加循环中的值以计算页数或其他任何您想要的值!
希望有所帮助,
spryno724