我需要在客户端替换多个不同的文本字符串。
让我们说我想取代" Red Apple"用"橘子橙"和#34;悲伤的猫"和#34;快乐狗"。
我一直试图扩展this question来处理多个替换。
$("#container h3 a").text(function () {
return $(this).text().replace("Red Apple", "Orange Orange");
return $(this).text().replace("Sad Cat", "Happy Dog");
});
我发现只返回了第一个替代品。
我无法弄清楚如何返回倍数,也没有得到这样的预期结果。
return {
...
}
这不是a duplicate的理由:请注意,我不是要替换苹果而是替换猫。
答案 0 :(得分:4)
您的第一个return
结束了该功能。第二个return
永远不会到达。
但你可以链接替换。
$("#container h3 a").text(function () {
return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");
});
答案 1 :(得分:1)
一旦您的代码到达return
语句,之后就不会处理任何代码。 return
从字面上将控制权返回给调用者代码。
return语句结束函数执行并指定值 返回函数调用者。
您可以通过以下几种方式处理此类问题:
您可以构建一个值,然后返回该值:
$("#container h3 a").text(function () {
// Work on your return value as much as you want
var retVal = $(this).text();
retVal = retVal.replace("Red Apple", "Orange Orange");
retVal = retVal.replace("Sad Cat", "Happy Dog");
return retVal; // And then return it (just once)
});
请注意,此方法绝对没有任何问题,因为它易于阅读和理解。
或者,在这种情况下,您可以链接.replace()
来电,因为每次调用.replace()
时,它都会返回一个新字符串,然后您可以调用.replace()
。最终字符串将作为原始return
实际发回的值返回:
$("#container h3 a").text(function () {
return $(this).text().replace("Red Apple", "Orange Orange")
.replace("Sad Cat", "Happy Dog");
});
请注意,这种方法完全相同,但它更紧凑,更精确,无需临时存储变量。
答案 2 :(得分:1)
我认为你应该可以通过在一个return语句中调用replace两次来完成它。
return $(this).text().replace("Red Apple", "Orange Orange").replace("Sad Cat", "Happy Dog");