2012-01-04 2 views
1

Ожидаемый результат:jquery append/prepend/wrapInner?

<li><a><span class="icon"></span><span class="text">Link Text</span></a></li>


Начиная HTML:

<li><a>Link Text</a></li> 

Я попытался использовать .prepend() с .append() и отдельно .wrapInner() но и не дают желаемых результатов.


$('li a').wrapInner("<span class='icon'></span><span class='text'></span>");

Выходы:

<li><a><span class="icon">Link Text</span></a></li>


$('li a').prepend("<span class='icon'></span><span class='text'>"); 
$('li a').append("</span>"); 

Выходы:

<li><a><span class="icon"></span><span class='text'></span>Link Text</a></li>

Я установил jsfiddle here. Есть ли способ достичь того, что я хочу?

ответ

5

jsFiddle проверить мое здесь. Я использовал, как показано ниже,

$('li a').wrapInner("<span class='text'></span>"); 

$('li a').prepend("<span class='icon'></span>"); 

Если вы хотите в 1 строку, а затем использовать, как показано ниже

$('li a').wrapInner("<span class='text'></span>").prepend("<span class='icon'></span>"); 

DEMO здесь

+0

Почему у вас есть открытые и закрывающиеся метки? '" "' –

+0

Это тоже работает, спасибо! 1 строка vers. немного легче кода, чем решение @Matt_H. –

+0

все мое плохое с тэгом reversal .. отредактировал его –

2

Что-то, как это должно работать:

$('li a').html('<span class="icon"></span><span class="text">' + $('li a').html() + '</span>'); 
+0

Спасибо, что работает! Я думал, что '.html()' будет входить в игру, но недостаточно квалифицирован в jQuery для его решения. –

+0

Если это правильный ответ, отметьте его. Благодарю. –

+1

Это не сработает, если есть несколько элементов 'li a'. И это разрушительный подход, который действительно не должен использоваться. –

0

Это, кажется, работает немного лучше :)

var curText = $('li a').text(); 

$('li a').html("<span class='icon'></span><span class='text'>"+curText+"</span>"); 

http://jsfiddle.net/zqUmL/5/

0

там что-то не так с делать это?

text = $('li a').html(); 
$('li a').html("<span class='icon'></span><span class='text'>"+text+"</span>");