我想替换html内容(而不是属性)中的一个单词,我在谷歌上搜索并找到了各种不同的正则表达式,但没有一个不能涵盖所有情况。
例如,将"width“替换为"width”
<div style="width: 200px">
width is 300.
<div>
<div style="width: 100px">
width is 200.
</div>
</div>
</div>
至
<div style="width: 200px">
[width] is 300.
<div>
<div style="width: 100px">
[width] is 200.
</div>
</div>
</div>
提前感谢
发布于 2012-01-05 20:48:25
$('div').html(function() {
return $(this).html().replace(/\b(width)\b/g, '[$1]');
});
http://jsfiddle.net/mblase75/zp8qE/
您必须使用.html
而不是.text
(和\b
来检查单词边界),因为您有嵌套在其他div中的div。
将/g
更改为/gi
以进行不区分大小写的搜索。
发布于 2012-01-05 20:58:32
试试这个:
$("*").contents().filter(function(){ return this.nodeType != 1; }).each(function() {
this.nodeValue = this.nodeValue.replace(/(\b)width(\b)/g, '$1[width]$2');
});
请参阅工作示例here。
其思想是遍历文档的所有“文本”元素。我采用了jQuery的example code from its docs并对其进行了一些修改。
当然,您可以更改第一个选择器,使其仅对您想要的元素起作用(例如,您可以在那里使用$("div")
而不是$("*")
)。
https://stackoverflow.com/questions/8749521
复制相似问题