2014-01-07 5 views
0

Я хочу клонировать и удалять ul last-child, но следующий код не работает. Кто-нибудь скажет мне, как это будет работать?Как клонировать и удалять последний дочерний элемент с помощью jquery?

$(document).ready(function() { 
    tmp1 = ''; 
    tmp = '<ul><li><h4>Menu 5</h4></li></ul><ul><li><h4>Menu 6</h4></li></ul><ul><li><h4>Menu 7</h4></li></ul>'; 
    $(tmp).children('ul:last-child').clone().appendTo(tmp1) 
    $(tmp).children('ul:last').remove(); 
    $('div').append(tmp); 
}); 
+0

Ключ в документации: _ «Метод .children() [...] перемещает только один уровень ** вниз по DOM [...] Если поставляется селектор, элементы будут фильтруются, проверяя, соответствуют ли они ему "_ - http://api.jquery.com/children/. Вероятно, вы хотите '.last()', так как ваша коллекция уже 'ul's. – elclanrs

+0

tmp1 ничего не делает? после appendto? – Ani

+0

Я буду использовать tmp1 для другого процесса;) @Ani – orcunh

ответ

1

Я думаю, что вы делаете это неправильно: tmp - это строка.

Вы должны сделать это: http://jsfiddle.net/Lu6jA/

$(document).ready(function() { 
    tmp1 = ''; 
    tmp = '<ul><li><h4>Menu 5</h4></li></ul><ul><li><h4>Menu 6</h4></li></ul><ul><li><h4>Menu 7</h4></li></ul>'; 
    var lastUl = tmp.lastIndexOf("<ul>"); 
    var yourclone = tmp.substring(lastUl); 
    var newtmp = tmp.replace(yourclone,""); 
    $('div').append(newtmp); 
    alert(yourclone); // This is for your reference 
}); 

Explantion: Сначала найдите last UL из строки. yourclone содержит последние ul в виде строки. Теперь замените last ul на строку tmp ничем, поэтому в основном это означает ее удаление и поместить результат в newtmp. добавьте его к div.

+0

Спасибо за ваше время;) Ваше решение в порядке ... – orcunh

+0

Добро пожаловать ........ – Ani

Смежные вопросы