Помогите с перебором массива
$(function(){ var arr = [ "A", "B", "C" ]; $.each(arr, function() { var apl = this; $("pre:contains('" + apl + "')").each(function(){ var re = new RegExp(apl,"gim"); $(this).html($(this).text().replace(re, "<span style=\"color:red\">" + apl + "</span>")); }); }); Почему-то происходит замена только по последнему элементу в массиве. А нужно что бы по всем элементам происходила замена. |
метод .text() - возвращает содержимое без тегов.
И получается что: 1) Получили содержимое в виде текста, обернули A в span 2) Получили содержимое в виде текста (А уже без span'a), обернули B в span 3) Получили содержимое в виде текста (А и B уже без span'a), обернули C в span Так что, вместо $(this).text().replaceнадо $(this).html().replace |
Цитата:
Всё работает! JS совсем не мой конек, потому не очень просто с ним работать... Подскажите ещё, если не сложно, как быть с ненужными паттернами? Вот к примеру: Есть массив: А, А1, В, В1 Скрипт находит и оборачивает А1 в тексте дважды. Как этого можно избежать? ...или запретить проход по уже обернутым поисковым фразам. |
Что бы понятней было, наверно, проще показать, что я пытаюсь сделать...
Аккорды Задача у меня не очень сложная, но со своими камнями. Хочу обернуть аккорды другой разметкой и аяксом подгружать аппликатуры... С аяксом проблем не будет, а вот с правильным парсингом голову приходится поломать, так как есть тексты и на английском... |
На php в общем-то больших проблем не вижу как это реализовать, но хотелось бы поменьше грузить сервер, потому решил переложить на клиента это дело...
|
а почему не через функцию .wrap?
А чтобы два раза не обворачивал добавь проверку: А не обернут ли уже? |
ЧТо бы я делал.
Добавить к div id <div class="song_txt" id="song"> Считать весь этот div в строку s= $('#song').html(); Использовать s=s.replace(/(Em)/gm,'<span ...>$1</span>'); не забудьте модификатор m. Вывести строку взад $('#song').html(s); |
Часовой пояс GMT +3, время: 19:10. |