Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Разделить строку и обернуть ее в тэг (https://javascript.ru/forum/jquery/49553-razdelit-stroku-i-obernut-ee-v-tehg.html)

1n3gan 18.08.2014 13:14

Разделить строку и обернуть ее в тэг
 
привет всем.

что имеется:
<div class="title">это строка номер | один.</div>
<div class="title">это строка номер | два.</div>
<div class="title">это строка номер | три.</div>


что нужно:
то, что идет после символа | обернуть в тэг <span>
в итоге должно получиться так:
<div class="title">это строка номер <span>один.</span></div>
<div class="title">это строка номер <span>два.</span></div>
<div class="title">это строка номер <span>три.</span></div>


что я делаю:
var title = $('.title:contains("|")');
var txt = title.html().split("|");
var output = ""
for(var x=0;x<txt.length;x++) {
  output = output + "<span>"+txt[x]+"</span>"
}
title.html(output);


что у меня получается:
1) <div class="title">это строка номер <span>один.</span></div>
2) <div class="title">это строка номер <span>один.</span></div>
3) <div class="title">это строка номер <span>один.</span></div>

Объясните, пожалуйста, где ошибка?
Спасибо за помощь заранее

Octane 18.08.2014 13:23

$('.title:contains("|")').each(function () {
    this.innerHTML = this.innerHTML.replace(/\|(.*)/, '<span>$1</span>');
});

Viral 18.08.2014 13:29

var title = $('.title:contains("|")'); // присваивает title массив элементов с классом title, внутри которых есть символ | (три элемента)
var txt = title.html().split("|"); // присваивает txt другой массив, который создается из строки, нахожящейся в первом элементе массива title (два элемента)
var output = ""
for(var x=0;x<txt.length;x++) {//цикл отрабатывает два раза, т.к. в массиве txt два элемента: "это строка номер" и "один."
  output = output + "<span>"+txt[x]+"</span>"//присваивает переменной output значение "<div class="title">это строка номер <span>один.</span></div>"
}
title.html(output);//меняет внутри всех элементов массива title код на содержимое переменной output

если вам надо было найти косяк, а не решение..

1n3gan 18.08.2014 13:30

Octane, Viral, спасибо большое, парни! теперь разобрался.


Часовой пояс GMT +3, время: 15:59.