-3

我有一个很好用的字体,除了一个字符:0幸运的是,O它是一个完美的替代品,所以我决定编写一些 JQuery 来删除所有的零并用大写的 Os 替换它们:

$("body").html($("body").html().replace(/0/g,'O'));

这很好用,直到我在页面上有一个带有零的链接,例如:

<a href="http://92.21.52.108:9000">Our server</a>

这将更改为:

<a href="http://92.21.52.1O8:9OOO">Our server</a>

我以为我会尝试$("body").text改用,但这完全行不通。

鉴于我需要保留字体,我该如何解决这个特殊问题?

谢谢!

4

3 回答 3

3

使用 JQuery 来做到这一点是一个非常糟糕的主意。

更新字体以改进“0”,或使用不同的字体。

于 2012-05-02T11:29:47.093 回答
1

这会起作用,但我不知道它的性能如何。

​$(function() {
    $('body *')
        .contents()
        .filter(function() {
             return( this.nodeType === 3 )
        })
        .each(function() {
             $(this).replaceWith($(this).text().replace(/0/g, 'O'))
        })

})​

http://jsfiddle.net/nPfDC/

于 2012-05-02T11:33:12.980 回答
-1

Channelling Crockford, you can use a non-jquery walker much like this:

var walk_the_DOM = function walk(node, func) {
    func(node);
    node = node.firstChild;
    while (node) {
        walk(node, func);
        node = node.nextSibling;
    }
};

walk_the_DOM(document.body, function(node) {
    if(node.nodeType == 3 ) {
        node.data = node.data.replace(/0/g,'O')
    }
});​

Demo here: http://jsfiddle.net/b7PtN/

于 2012-05-02T11:51:56.260 回答