我有像这样的替换问题:
我有一个阵列测试:
test: Object
boolean: "true"
integer: "0"
values|+|0: "option_1"
values|+|1: "option_2"
然后我会像这样解析:
for(var data in test){
for(var input in test[data]){
var input_aux = input.split('|+|');
if(input != ''){
$('table#'+table_id+' tbody td.'+input_aux[0]+' small').each(function(){
var text_highlighted = $(this).text().replace(new RegExp('(' + test[table][input] + ')', 'gi'), '<b>$1<\/b>');
$(this).html(text_highlighted);
}}}
我要完成的是将该表中的数据(例如option_1
中的数据与option_1
完全匹配,并将其html更改为<b>option_1</b>
。
它的工作正常我的问题就像当我拥有相同的键但是上面的例子中的值不同时,它只会突出显示option_2
并且无法理解为什么,任何想法?
答案 0 :(得分:1)
问题在于即使没有匹配也要进行替换。因此,您正在阅读所有元素的text()并将其替换为该文本。所以你消灭了所有现有的HTML。
因此,在进行更换之前,请检查是否有匹配。
var re = new RegExp('(' + test[table][input] + ')', 'gi');
var txt = $(this).text();
if (txt.match(re)) {
var text_highlighted = txt.replace(re, '<b>$1<\/b>');
$(this).html(text_highlighted);
}
其他选项是使用contains selector。