Вертикальный текст с jQuery

Я хочу вертикально выровнять текст, добавив теги <br /> между символами с помощью jQuery.

<div id = "foo"><label>Vertical Text</label></div> 

будет выглядеть так:

V
e
r
t
i
c
a
l

T
e
x
t

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
8
0
19 650
6

Ответы 6

Не проверял, но работать должно.

var element = $( '#foo label' );
var newData = '';
var data = element.text();
var length = data.length;
var i = 0;

while( i < length )
{

    newData += data.charAt( i ) + '<br />';
    i++;

}

element.html( newData );

V <br /> e <br /> r <br /> t <br /> i <br /> c <br /> a <br /> l <br /> <br /> T <br /> e <br /> x <br /> t <br /> вот что это значит.

MrChrister 10.11.2008 23:09

Эта последняя строка должна быть: element.html (newData);

mwilliams 10.11.2008 23:19

Верно. Это лучше, чем мой ответ.

MrChrister 10.11.2008 23:21

Это основано на ответе Себастьяна Х, но я тестировал его, и это работает

    var element = $( '#foo label' );
    var newData = '';
    var data = element.text();
    var length = data.length;
    var i = 0;
    $( '#foo label' ).html("");
    while( i < length )
    {
            $( '#foo label' ).append(data.charAt( i ) + "<br />")
            i++;
    }

Если у меня больше одного, он, кажется, добавляется к обоим, таким образом удваивая текст. Есть идеи?

Parrfolio 11.11.2008 00:08

Пойдем поиграть в гольф!

$('#foo label').html($('#foo label').text().replace(/(.)/g,"$1<br />"));

Полностью непроверено, но шаблон в регулярном выражении выглядит как болвана.

Зачем использовать цикл while, если вы можете использовать jQuery, встроенный в каждый метод?

$.each( $('#foo').text(), function(){ $('#foo').append(this + '
'); } );

Там. Оно работает. Вы можете это проверить.

Ответ г-на Курта хорошо работает для одного идентификатора, но если вам нужно что-то более полезное, которое можно применить к нескольким элементам, попробуйте что-то вроде этого:

$.each( $(".verticalText"), function () { $(this).html($(this).text().replace(/(.)/g, "$1<br />")) } );

Затем просто установите class = "verticalText" на элементы, которые вы хотите отформатировать следующим образом.

И в качестве бонуса он сохраняет регулярное выражение boob.

document.write("vertical text".split("").join("<br/>"));

Редактировать: Отверстие в одном!

Другие вопросы по теме