Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2014, 19:11
Новичок на форуме
Отправить личное сообщение для seipa Посмотреть профиль Найти все сообщения от seipa
 
Регистрация: 30.04.2014
Сообщений: 1

Добавление тегов к словам по поиску
Привет,

подскажите/натолкните на мысль, как с помощью jQuery сделать так, чтобы он нашёл в документе все слова (например, "программирование), и обрамил их в тег <span>?

можно конечно ручками переписать всё body и добавить теги нужным словам, но задача именно в этом - не трогая html при нажатии кнопки изменить цвет слова "программирование" во всём документе.

спасибоо
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2014, 19:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

seipa,
jQuery highlight plugin — подсветка слов в тексте
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2014, 20:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Пример без jQuery, на NodeIterator'е. Как и плагин, также игнорирует частично-форматированные слова и слова с мягким переносом.
<!DOCTYPE html>
<meta charset="utf-8" />
<style>
	span{
		background: yellow;
	}
</style>
<p>подскажите/натолкните на мысль, как с помощью jQuery сделать так, чтобы он нашёл в документе все слова (например, "программирование), и обрамил их в тег &lt;span>? </p>
<p>
можно конечно ручками переписать всё body и добавить теги нужным словам, но задача именно в этом - не трогая html при нажатии кнопки изменить цвет слова "программирование" "программирование" во всём документе.
</p>
<script>
(function() {

var needle = 'программирование';

var nodeIterator = document.createNodeIterator(document.body, NodeFilter.SHOW_TEXT);

var currentNode;
while (currentNode = nodeIterator.nextNode()) {
	var substringIndex = currentNode.data.indexOf(needle);
	if (substringIndex > -1) {
		var span = document.createElement('span');
		span.appendChild(document.createTextNode(currentNode.data.substring(substringIndex, substringIndex + needle.length)));
		var remainder = document.createTextNode(currentNode.data.substring(substringIndex + needle.length));
		currentNode.data = currentNode.data.substring(0, substringIndex);
		currentNode.parentNode.insertBefore(span, currentNode.nextSibling);
		currentNode.parentNode.insertBefore(remainder, span.nextSibling);
		// skip span
		nodeIterator.nextNode();
	}
}

})();
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокирование интерфейса. Добавление нового элемента vychmat Элементы интерфейса 5 20.03.2014 15:04
Добавление тегов как на ютубе artem328 Элементы интерфейса 8 06.02.2014 16:48
DOM модель подсчет тегов документа kent666 Events/DOM/Window 4 17.10.2011 21:51
Перебор вложенных тегов. werdes jQuery 0 27.07.2010 11:51
Как переместить курсор внутри тегов? alex-v Javascript под браузер 8 29.08.2009 23:07