jQuery:使用.replace()替换元素内的文本

时间:2012-02-13 21:22:42

标签: jquery regex

我想对存储在jQuery对象中的某些元素的文本执行“查找和替换”操作。我想使用javascript函数.replace()替换文本,它使用正则表达式选择器。如何更正此示例代码?

$(JQUERY_OBJECT).html(
    $(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT')
);

注意:我正在操作的jQuery对象可能包含子元素,但我不想保留它们。这就是我使用.text()的原因。但是,如果可以在不丢弃内部元素的情况下运行.replace()函数,那就太棒了。

2 个答案:

答案 0 :(得分:3)

如果您使用的是最新版本的jQuery,.html()方法接受函数作为参数,函数接收当前内容作为参数,返回值用于替换当前内容。 / p>

所以代码是:

$(JQUERY_OBJECT).html(function(idx,oldHtml){
   //idx is the index of the current element in the JQUERY_OBJECT
   return oldHtml.replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT')
});

http://api.jquery.com/html/#html2

使用.text()这是同一个故事

$(JQUERY_OBJECT).text(function(idx,oldText){
   //idx is the index of the current element in the JQUERY_OBJECT
   return oldText.replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT')
});

http://api.jquery.com/text/#text2

或者使用.html和.text

的组合重新编写已经获得的内容
$(JQUERY_OBJECT).html(function(idx,oldHtml){
   return $(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT')
});

答案 1 :(得分:0)

var text = $(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT');
$(this).text(text);

或者你可以使用replaceWith而不是第二个text(),如果这更合适吗?