Мне в основном нужно выделить определенное слово в блоке текста. Например, представьте, что я хочу выделить слово «dolor» в этом тексте:
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
</p>
<p>
Quisque bibendum sem ut lacus. Integer dolor ullamcorper libero.
Aliquam rhoncus eros at augue. Suspendisse vitae mauris.
</p>
Как мне преобразовать приведенное выше примерно так:
<p>
Lorem ipsum <span class="myClass">dolor</span> sit amet, consectetuer adipiscing elit.
</p>
<p>
Quisque bibendum sem ut lacus. Integer <span class="myClass">dolor</span> ullamcorper
libero. Aliquam rhoncus eros at augue. Suspendisse vitae mauris.
</p>
Возможно ли это с помощью jQuery?
Изменить : как отметил Себастьян , это вполне возможно без jQuery, но я надеялся, что может быть специальный метод jQuery, который позволит вам делать селекторы для самого текста. Я уже активно использую jQuery на этом сайте, поэтому, если все будет завернуто в jQuery, это, возможно, сделает вещи немного более аккуратными.
javascript
jquery
html
Nickf
источник
источник
<span>
, более правильно использовать<mark>
.Ответы:
Попробуйте выделить: Подсветка текста JavaScript, плагин jQuery .! Предупреждение. Исходный код, доступный на этой странице, содержит скрипт майнинга криптовалюты, либо используйте приведенный ниже код, либо удалите скрипт майнинга из загрузки на веб-сайте. !Также попробуйте «обновленную» версию исходного скрипта .
источник
источник
Почему использовать самодельную функцию выделения - плохая идея
Причина, по которой, вероятно, плохая идея начинать создавать свою собственную функцию выделения с нуля, заключается в том, что вы наверняка столкнетесь с проблемами, которые другие уже решили. Проблемы:
innerHTML
)Звучит сложно? Если вам нужны некоторые функции, такие как игнорирование некоторых элементов выделения, отображение диакритических знаков, сопоставление синонимов, поиск внутри iframe, поиск по отдельным словам и т. Д., Это становится все более и более сложным.
Использовать существующий плагин
При использовании существующего, хорошо реализованного плагина вам не нужно беспокоиться о вышеупомянутых вещах. В статье 10 подключаемых модулей выделения текста jQuery на Sitepoint сравниваются популярные подключаемые модули выделения текста . Сюда входят плагины ответов на этот вопрос.
Взгляните на mark.js
mark.js - это такой плагин, который написан на чистом JavaScript, но также доступен как плагин jQuery. Он был разработан, чтобы предложить больше возможностей, чем другие плагины, с опциями для:
ДЕМО
В качестве альтернативы вы можете увидеть эту скрипку .
Пример использования :
Это бесплатно и с открытым исходным кодом на GitHub ( ссылка на проект ).
источник
Вот вариант, который игнорирует и сохраняет регистр:
источник
innerHTML
зло, см. мой ответ здесь. Кроме того,\\b
не работает для символов Юникода. Кроме того, эта функция пропускает почти все, например поиск внутри вложенных дочерних элементов.Вы можете использовать следующую функцию, чтобы выделить любое слово в тексте.
Просто выберите элемент , содержащий текст, выбрав слово, которое нужно раскрасить, и выбранный цвет .
Вот пример :
Использование ,
источник
Вы можете использовать мой плагин выделения jQuiteLight , который также может работать с регулярными выражениями.
Для установки с использованием npm введите:
Для установки с использованием типа bower :
Использование:
Более продвинутое использование здесь
источник
var oldMark = $.fn.mark.noConflict()
markRegExp()
для выделения пользовательских регулярных выражений. Так что это не должно быть аргументом.JSFiddle
Пользы
.each()
,.replace()
,.html()
. Протестировано с jQuery 1.11 и 3.2.В приведенном выше примере считывает «ключевое слово», которое нужно выделить, и добавляет тег span с классом «подсветки». Текст «ключевое слово» выделяется для всех выбранных классов в
.each()
.HTML
JS
CSS
источник
Вам нужно получить содержимое тега p и заменить в нем все dolors на выделенную версию.
Для этого вам даже не нужен jQuery. :-)
источник
Я написал очень простую функцию, которая использует jQuery для итерации элементов, заключая каждое ключевое слово в класс .highlight.
Больше информации:
http://www.hawkee.com/snippet/9854/
источник
Я создал репозиторий по аналогичной концепции, который изменяет цвета текстов, цвета которых распознаются html5 (нам не нужно использовать фактические значения #rrggbb, и мы могли бы просто использовать имена как html5, стандартизированные около 140 из них)
colors.js
источник
Возможно ли получить этот пример выше:
не заменять текст внутри html-тегов вроде, иначе страница ломается.
источник
Jfiddle здесь
источник
hilight
не является допустимым элементом HTML