问题描述
<div id="id1">
apple
ball
dogsss
dogsssdogsss
dogsssdogsssdogsss
</div>
如何使用jquery将ALL dogsss
更改为dollsss
?
这是代码,但是如何确定元素呢?
$('#id1 how???').each(function() {
var text = $(this).text();
$(this).text(text.replace('dog', 'doll'));
});
这是类似的问题http://stackoverflow.com/questions/8146648/jquery-find-text-and-replace
1楼
Tushar
2
已采纳
2015-08-07 07:40:57
您的replace
只会从字符串中删除首次出现的内容。
将regex
与replace一起使用可删除所有出现的事件。
在regex
使用全局标志,即g
替换所有出现的事件。
更改
$(this).text(text.replace('dog', 'doll'));
至
$(this).text(text.replace(/dog/g, 'doll'));
另外,您可以将与回调一起使用以更新element的innerText
。
演示版
$('#id1').text(function(i, oldText) { return oldText.replace(/dog/g, 'doll'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> <div id="id1"> apple ball dogsss dogsssdogsss dogsssdogsssdogsss </div>
2楼
Alexander T.
1
2015-08-07 07:42:41
您可以将与回调一起使用,并将regex与修饰符一起使用
$('#id1').text(function(index, text) { return text.replace(/dog/g, 'doll'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="id1"> apple ball dogsss dogsss dogsss </div>
3楼
Maximillian Laumeister
1
2015-08-07 07:43:25
代替使用replace()
,使用split()
和join()
,它们将替换所有出现的内容,而不仅仅是第一个出现的内容:
$('#id1').each(function() { var text = $(this).text(); $(this).text(text.split("dog").join("doll")); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="id1"> apple ball dogsss dogsss dogsss </div>
4楼
iplus26
0
2015-08-07 07:44:22
而已:
$('#id1').text(function(index, oldText) { return oldText.replace(/dog/g, 'doll'); }) // or not use a function // $('#id1').text($('#id1').text().replace(/dog/g, 'doll'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="id1"> apple ball dogsss dogsssdogsss dogsssdogsssdogsss </div>
5楼
LcKjus
0
2015-08-07 07:45:11
您应在正则表达式中将'/ g'用于全局。 否则,只会替换第一个匹配项。
$(this).text(text.replace(/dog/g, 'doll'));