Заменить текст, но не теги HTML?
Я выполняю сопоставление текста для автозаполнения в JQuery, перегружая метод _renderItem для проверки объекта JSON на текст, который искал пользователь. Найдя его, я заменяю его тегом span на класс user_highlight_match.
Я выполняю поиск по нескольким словам, поэтому «Джон Сми» выделит Джона, затем Сми, а поиск «Джон Джеймс Сми» выделит «Джона» и «Сми». Проблема в том, что, скажем, вы ищете «Джон Лас», он начнет сопоставляться с атрибутом класса тега span, если он уже существует. Как я могу обойти это?
Изменить: Вот код, показывающий, о чем я говорю:
renderItem = function(ul, item) {
li = $('<li>', id: item._id);
if this.term and not item.dialog
terms = this.term.split(' ');
for term in terms
re = new RegExp("("+term+")", 'i');
match = re.exec(item.name);
if match
item.name = item.name.replace re, "<span class=\"user_highlight_match\">+match[0]+</span>";
)
Таким образом, первый термин будет соответствовать отлично, но каждый раз после этого, если вы ищете что-либо в тегах html, частичное совпадение заменяется тегом. Скажем так, на «Ласе» был матч, он стал бы таким:
<span c<span class="user_highlight_match">Last</span>s="user_highlight_match">Last</span>