Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как вставить тег в конец других? (https://javascript.ru/forum/jquery/4900-kak-vstavit-teg-v-konec-drugikh.html)

SashaBorandi 28.08.2009 13:26

Как вставить тег в конец других?
 
Добрый день ребята.

Как можно вставить тег допустим "<li>текст</li>" в конец "<ul></ul>" других тегов?

Есть вот это:
<div id="data">
<ul>
<li>текст</li>
<li>текст</li>
<li>текст</li>
<li>текст</li>
</ul>
</div>


в JS пишу:
var tag = '<li>текст</li>';
$('#data ul').html(tag);


но как понятно он полностью уничтожает содержимое тега "ul" и вставляет... Мне же нужно сделать так чтобы вставлял в конец уже содержимого?

SashaBorandi 28.08.2009 13:38

Нащел ответ... но не совсем то что нужно..

Цитата:

append(something): добавляет “something” в конец выбранного;
У меня же на самом деле код выглядит так:
var tag = '<li>текст</li>';
$('#data').find(ul).html(tag);


<div id="data">
<ul>
<li>текст<ul></ul></li>
<li>текст<ul></ul></li>
<li>текст<ul></ul></li>
<li>текст<ul></ul></li>
</ul>
</div>


Я просто упростил вариант кода, но мне жизнено необходимо использовать ".find(ul)" так как мне нужно найти его...

Вот в результате замены ".html(tag)" на ".append(tag)" приводит к тому что он подставляет везде где есть тег "<ul>"...

Urfin 28.08.2009 13:54

Добавьте ULу класс или ID и ищите по ним.
.find('ul.my_class').append(...)


Вернее у вас же вложен в див, тогда можно так:
$('#data').find('ul').append(...)

SashaBorandi 28.08.2009 14:12

Цитата:

Сообщение от Urfin (Сообщение 28557)
Добавьте ULу класс или ID и ищите по ним.
.find('ul.my_class').append(...)

Так не получится, так как если я "ul" сделаю класс или идентификатор.. то и вложенным в "li" тегу "ul" тоже будет тотже самый класс или индентификатор как у родителя...

Цитата:

Вернее у вас же вложен в див, тогда можно так:
$('#data').find('ul').append(...)

Я это способ уже описал выше.. результатом будет то что он во все "ul" будет вставлять...

Проблема в find().. чем бы его заменить?

e1f 28.08.2009 14:23

$('#data > ul:first').append('<li>текст</li>');

А что мешает дать класс?
Цитата:

Сообщение от SashaBorandi (Сообщение 28561)
если я "ul" сделаю класс или идентификатор.. то и вложенным в "li" тегу "ul" тоже будет тотже самый класс или индентификатор как у родителя...

Бред какой-то...

SashaBorandi 28.08.2009 14:46

Никакого бреда нету!
Я делаю комментарии к посту.. с поддержкой AJAX.. Но так чтобы можно было отвечать на уже созданные коменты..

Есть шаблон для одного комментария (сократил его):
<li>
<div>{username}<div>
<div>{text_comment}<div>
<ul>{comm}<ul>
</li>


Есть шаблон для блока коментариев (сократил):
<div>
<h3>Комментарии:</h3>
<ul>{comm_list}</ul>
</div>


В PHP у меня генерируется список и вставляется в основной блок комментарии в {comm_list}. А если у комментарии есть "под-комментарий" то он вставляется в {comm}..

ПО-ЭТОМУ! если я ul сделаю клас то и везде будут тоже тотже самый клас...

SashaBorandi 28.08.2009 15:08

Все.. решение найдено.. Пришлось переделать поиск тега.. и установки селектора ">"..

Вот что получилось:
$('li[id="comment_'+post_id+'_'+comm_id+'"] > ul').append(data);

e1f 28.08.2009 15:10

Ну, тогда можно так: Вы же знаете, куда именно должен быть вставлен новый комментарий, то есть можете определить переменную parent, содержащую ссылку на тот <ul>, куда необходимо добавить новый комментарий. И тогда все просто:
$(parent).append('<li>текст</li>')


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