我想对存储在jQuery对象中的某些元素的文本执行“查找和替换”操作。我想使用javascript函数.replace()
替换文本,它使用正则表达式选择器。如何更正此示例代码?
$(JQUERY_OBJECT).html(
$(this).text().replace(/REGEX_EXPRESSION/, 'REPLACEMENT_TEXT')
);
注意:我正在操作的jQuery对象可能包含子元素,但我不想保留它们。这就是我使用.text()
的原因。但是,如果可以在不丢弃内部元素的情况下运行.replace()
函数,那就太棒了。
答案 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(),如果这更合适吗?