jQuery:在 html() 中替换()
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23325973/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jQuery: replace() in html()
提问by Martin
How can I replace html parts with replace()
?
如何用 替换 html 部分replace()
?
<div>
<a href="http://www.google.com">google.com</a>
</div>
JS:
JS:
var e = $("div"),
fix = e.html().replace("google.com", "duckduckgo.com");
e.html(fix);
I guess html() is not working the same as text()
?
我猜 html() 与text()
?
回答by Oriol
The problem is that .replace
only replaces first occurence. If you want to replace all occurences, you must use a regular expression with a g
(global) flag:
问题是.replace
只替换第一次出现。如果要替换所有出现,则必须使用带有g
(全局)标志的正则表达式:
var e = $("div"),
fix = e.html().replace(/google\.com/g, "duckduckgo.com");
e.html(fix);
<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>
Remember you must escape special characterssuch as .
, though. If you prefer, you can use
请记住,您必须转义诸如, 之类的特殊字符.
。如果您愿意,可以使用
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);
<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>
回答by j08691
Make your pattern global by using the g
switch:
使用g
开关使您的模式全局化:
var e = $("div"),
fix = e.html().replace(/google.com/g, "duckduckgo.com");
e.html(fix);
This way it replaces the link andthe text.
这样它就替换了链接和文本。
回答by guest271314
$("div a").attr("href", function (i, o) {
return (/google/.test(o) ? "http://duckduckgo.com" : o)
}).html($("a", this).attr("href").substr(7))