Показать сообщение отдельно
  #2 (permalink)  
Старый 07.10.2017, 20:22
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

https://jsfiddle.net/s69v7xvk/
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<div>
Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только <div>успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн. Его популяризации в новое время послужили публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в более недавнее время,</div> программы электронной вёрстки типа Aldus PageMaker, в шаблонах которых используется Lorem Ipsum.
</div>
<script>
  $(function(){
    var find_string='е';
    $('*:contains("'+find_string+'")').filter(function(){
      var $t=$(this).clone();
      $t.find('>*').remove();

      if($t.text().indexOf(find_string)==-1)
        return false;

      $(this).html(this.innerHTML.replace(new RegExp('('+find_string+')','gm'),'<span style="color:red;">$1</span>'));
    });
  });
</script>

Работает, но мне не нравится алгоритм.
Возможно можно работать сразу с контентом document.body и избавится от нахождения прямого родителя текста, который будет изменен.
+ нужно усложнить регулярку, сейчас она может модифицировать и html код, что приведен к его инвалидности.

Последний раз редактировалось Nexus, 07.10.2017 в 20:25.
Ответить с цитированием