jQuery:html()中的replace()

Mar*_*tin 3 html jquery replace

如何用html替换replace()

<div>
    <a href="http://www.google.com">google.com</a>
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

var e = $("div"),
    fix = e.html().replace("google.com", "duckduckgo.com");
e.html(fix);
Run Code Online (Sandbox Code Playgroud)

我猜html()的工作方式不一样text()吗?

测试:http://jsfiddle.net/Hmhrd/

Ori*_*iol 12

问题是.replace只能取代第一次出现.如果要替换所有出现的事件,则必须使用带有g(全局)标志的正则表达式:

var e = $("div"),
    fix = e.html().replace(/google\.com/g, "duckduckgo.com");
e.html(fix);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
    <a href="http://www.google.com">google.com</a>
</div>
Run Code Online (Sandbox Code Playgroud)

演示

记住,你必须逃避特殊字符,例如..如果您愿意,可以使用

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(
        new RegExp(  s1.replace(/[.^$*+?()[{\|]/g, '\\$&'),  'g'  ),
        s2
    );
};

var e = $("div"),
    fix = e.html().replaceAll('google.com', "duckduckgo.com");
e.html(fix);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div>
    <a href="http://www.google.com">google.com</a>
</div>
Run Code Online (Sandbox Code Playgroud)

演示