2012-05-29 5 views
0

Можно создать дубликат:
Implementing a highlight feature for a live search in JavaScript/JQueryJavaScript Поиск и Выделите текст

Предположим, у меня есть DIV:

<div id="content">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 

В основном я хочу, чтобы сделать поиск с помощью Javascript, а затем выделите результаты. Итак, предположим, что поисковый запрос magna aliqua. Я делаю следующее:

$("#content:contains('magna aliqua')").addClass("highlight"); 

Это работает, но применяет класс выделения на весь DIV content. Я хочу только выделить точные слова magna aliqua, что означает, что мне как-то придется обернуть текст в тег, а затем применить класс выделения к этому новому тегу.

Каков наилучший способ для этого?

+0

Удаление мой ответ: есть способ, но его плохой пример: http://jsfiddle.net/Q2GcK/ (любезность @ FelixKling - Это относительно плохой пример. Он также попытался бы заменить слова в атрибутах HTML и уничтожил бы любой обработчик событий, привязанный к любому элементу внутри элемента. » –

+0

Вы также можете посмотреть [мой плагин здесь] (https://github.com/fkling/jquery_playground/blob/master/jquery_text_highlight.js) .Это не закончено, но оно работает для выделения простого текста. –

ответ

0

Попробуйте это ...

word = 'magna aliqua' 
var rgxp = new RegExp(word, 'g'); 
var repl = '<span class="myClass">' + word + '</span>'; 

var element = $("#content:contains(word)"); 
element.html(element.html().replace(rgxp, repl)); 
+1

Это ' s относительно плохой пример. Он также попытался бы заменить слова в атрибутах HTML и уничтожил бы любой обработчик событий, который был привязан к любому элементу внутри 'element'. –

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