2013-07-19 2 views
1

Я пытаюсь добавить срок к конкретному слову, как это:Добавить интервал для конкретных слов

var value = "eror"; 
var template = "/(" + value + ")/g"; 
$("#content").html($("#content").html().replace(template, '<span class="spell_error">$1</span>')); 

Вот мой fiddle. Я попытался использовать решение, которое я видел здесь, но он, похоже, не работает. Любая идея, почему? Спасибо

ответ

6

Вы вводите в заблуждение литералы и строки регулярного выражения.

Используйте это, чтобы создать регулярное выражение:

var template = new RegExp("(" + value + ")", 'g'); 

Регулярное выражение буквальным, как это:

/(something)/ 

Там нет цитаты. Но поскольку это буквальный, вы не можете создать его с помощью своего кода, поэтому вы должны использовать конструктор RegExp.

Примечание стороны: ваша замена yould быть легче и, что более важно, сушилка для белья, используя html вариант, принимая функцию обратного вызова:

$("#content").html(function(_,html){ 
    return html.replace(template, '<span class="spell_error">$1</span>') 
}); 
+0

Ohhh, я испортил его на самом деле. Спасибо! Также благодарим вас за предложение использовать обратный вызов. очень признателен. – Cornwell

Смежные вопросы