<div id="id1">
apple
ball
dogsss
dogsssdogsss
dogsssdogsssdogsss
</div>
如何使用jquery将所有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
答案 0 :(得分:2)
您的replace
只会删除字符串中的第一个匹配项。使用regex
和replace删除所有匹配项。使用全局标记,即g
中的regex
来替换所有匹配项。
更改
$(this).text(text.replace('dog', 'doll'));
要
$(this).text(text.replace(/dog/g, 'doll'));
此外,您可以使用text()进行回调来更新元素的innerText
。
<强>演示强>
$('#id1').text(function(i, oldText) {
return oldText.replace(/dog/g, 'doll');
});
&#13;
<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>
&#13;
答案 1 :(得分:1)
您可以将.text
与回调一起使用,并将正则表达式与/g
修饰符一起使用
$('#id1').text(function(index, text) {
return text.replace(/dog/g, 'doll');
});
&#13;
<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>
&#13;
答案 2 :(得分:1)
不使用replace()
,而是使用split()
和join()
,它将替换所有匹配项而不是第一个:
$('#id1').each(function() {
var text = $(this).text();
$(this).text(text.split("dog").join("doll"));
});
&#13;
<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>
&#13;
答案 3 :(得分:0)
就是这样:
$('#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>
答案 4 :(得分:0)
您应该在正则表达式中使用'/ g'表示全局。否则只会替换第一个匹配。
$(this).text(text.replace(/dog/g, 'doll'));