Вертикальный текст с помощью jQuery - PullRequest
8 голосов
/ 10 ноября 2008

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

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

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

V
E
r
т
я
c

l

T
E
х
т

Ответы [ 6 ]

26 голосов
/ 10 ноября 2008

Пошли в гольф!

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

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

4 голосов
/ 09 августа 2010

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

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

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

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

3 голосов
/ 09 августа 2010

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

Edit: Отверстие в одном!

3 голосов
/ 10 ноября 2008

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

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 );
1 голос
/ 10 ноября 2008

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

    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++;
    }
0 голосов
/ 11 ноября 2008

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

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

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

...