JQuery добавить закрытый тег - PullRequest
3 голосов
/ 21 июля 2011

У меня проблема с jquery.После многих тестов, для меня нет простого решения.

Моя CMS возвращает мне этот код

<ul>
   <li>text</li>
   <li>text</li>
   <li class="last">text</li>
   <li>text</li>
   <li>text</li>
   <li class="last">text</li>
   <li>text</li>
   <li>text</li>
   <li class="last">text</li>
</ul>

Я хочу добавить после каждого класса = последний этот код

</ul><ul>

чтобы получить этот код

<ul>
   <li>text</li>
   <li>text</li>
   <li class="last">text</li>
</ul><ul>
   <li>text</li>
   <li>text</li>
   <li class="last">text</li>
</ul><ul>
   <li>text</li>
   <li>text</li>
   <li class="last">text</li>
</ul>

Я попытался с помощью jquery с этим кодом

$('.last').after('</ul><ul>')

, но невозможно добавить этот текст.Я получаю

<ul></ul> 

, а не

</ul><ul>

Можете ли вы дать мне решение моей проблемы.Заранее спасибо;)

Ответы [ 4 ]

7 голосов
/ 21 июля 2011

Вы не можете разделить DOM-узел подобным образом, вам нужно добавить новый <ul></ul> и переместить в него соответствующие подузлы.

Если вы заметили, что не разделяете списоки вместо того, чтобы декорировать .last, чтобы он выглядел как разделитель (пустое пространство, чего, я полагаю, вы пытаетесь достичь)?

0 голосов
/ 21 июля 2011

Вид грубой силы, но попробуйте это:

var newUL = [$('<ul></ul>')];    

$('ul.className li').each(function(i, el) {
   newUL[newUL.length - 1].append($(el));
   if($(el).hasClass('last')) {
      newUL.push($('<ul></ul>'));
   }
});

Как только вы закончите, вы можете получить новый HTML, сказав:

$('#ulParent').empty.append(newUL.join('')); 
0 голосов
/ 21 июля 2011

Попробуйте это (я предполагаю, что этот ul лежит в некотором контейнере, скажем, div.

var container = $("div");
var ul = $("<ul/>");
var lis = $("ul > li", container);
container.empty();
lis.each(function(){

   ul.append(this);
   if($(this).hasClass("last")){
     container.append(ul);
     ul = $("<ul/>");
   }
});
container.append(ul);
0 голосов
/ 21 июля 2011

У меня нет времени кодировать его прямо сейчас, но я думаю, что вы можете использовать «detach»:

http://api.jquery.com/detach/

Отсоединить элементы li и затем добавить их вновый список и приступайте к построению своих списков таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...