Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обернуть каждую строку в контейнере в тег (https://javascript.ru/forum/jquery/54418-obernut-kazhduyu-stroku-v-kontejjnere-v-teg.html)

snovapavel 16.03.2015 19:22

Обернуть каждую строку в контейнере в тег
 
Добрый вечер!

Есть конструкция вида:

<pre class="single_pre_tag">
Ехал Грека через реку.

Видит Грека в реке рак.
Сунул в реку руку Грека.

Рак за руку Грека - цап.
</pre>


Мне необходимо обернуть каждую строку в <code>, чтобы получилось так:

<pre class="single_pre_tag">
<code>Ехал Грека через реку.</code>
<code>& # 9 ;</code>
<code>Видит Грека в реке рак.</code>
<code>Сунул в реку руку Грека.</code>
<code>& # 9 ;</code>
<code>Рак за руку Грека - цап.</code>
</pre>


Я нашёл вот такой код:

$( '.single_pre_tag' ).each(function () {
	var lines = $( this ).html().split( '\n' );
	$( this ).html( '<code>' + lines.join('</code><code>') + '</code>' );
});


Но он напрочь игнорирует пустые строки и выбрасывает их... Как дописать сюда поддержку пустых строк (<code>& # 9 ;</code>)?

Заранее благодарю!

рони 16.03.2015 19:59

snovapavel,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  code  {
    display:  block;
  }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    $(".single_pre_tag").each(function() {
        var lines = this.innerHTML.split("\n");
        lines = $.map(lines, function(val) {
            return "<code>" + (val || "& # 9 ;") + "</code>"
        });
        $(this).html(lines)
    })
});
  </script>
</head>

<body>
<pre class="single_pre_tag">
Ехал Грека через реку.

Видит Грека в реке рак.
Сунул в реку руку Грека.

Рак за руку Грека - цап.
</pre>
</body>
</html>

snovapavel 16.03.2015 20:17

рони,
Огромное спасибо!


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