JavaScript/jQuery:替换字符串的一部分?

47

像这样的文本:

<div class="element">
<span>N/A, Category</span>
</div>

我想要清除掉所有的N/A

这是我的尝试:

$('.element span').each(function() {
        console.log($(this).text());
        $(this).text().replace('N/A, ', '');
    });

记录的文本是span内的文本,所以选择器是正确的。

我在这里做错了什么?


1
replace 返回一个字符串,它不会执行原地更改。即使这样,文本也会自动设置为元素。 - Felix Kling
2个回答

105

在替换调用之后,您需要设置文本:

$('.element span').each(function() {
  console.log($(this).text());
  var text = $(this).text().replace('N/A, ', '');
  $(this).text(text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="element">
  <span>N/A, Category</span>
</div>


这里是另一种很酷的方法(感谢@Felix King提供的提示):

$(".element span").text(function(index, text) {
    return text.replace("N/A, ", "");
});

16
或者传递一个函数:$(this).text(function(i, text) { return text.replace(...);}); (说明:这是一段jQuery代码,意思是将文本元素的内容替换为通过传递的函数返回的新内容。函数中的参数i表示元素在集合中的索引,参数text表示元素当前的文本内容。) - Felix Kling
@Felix:好主意,我总是忘记那个版本。 - Andrew Whitaker
+1 给第二个版本,点赞 @Felix 的一个答案将其转移给他 :)。 - kapa
2
@bazmegakapa:哈哈,是的。我已经给@Felix很多赞了 :) - Andrew Whitaker
@Andrew 我猜我们大多数人都有过这样的经历 :)。 - kapa

14

它应该像这样

$(this).text($(this).text().replace('N/A, ', ''))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接