无法删除克隆的列表元素

时间:2014-06-23 09:33:52

标签: jquery clone

我在菜单中克隆了列表项,并且我在后面的链接上有一个on click操作,应该删除克隆的元素。

但它们不会被删除,每次单击菜单项时,子菜单都会不断增长。

我尝试过不同的方法:

$('.portal-sub-menu').empty()
$('.portal-sub-menu').remove()
$('.portal-sub-menu').children().remove()

你可以在这里看到小提琴:http://jsfiddle.net/spstieng/MdJsL/8/

为什么我无法删除克隆的项目?

2 个答案:

答案 0 :(得分:1)

这是一个固定的JSFiddle:

http://jsfiddle.net/MdJsL/12/

更新了JS:

$('.portal-menu a').click(function () {
    $('.portal-menu').addClass('slide');
    return false;
});

$('.portal-menu > li a').on('click', function () {
    $(this).next().children().clone(true, true).appendTo('.portal-sub-menu');
    $('.portal-sub-menu .back').on('click', function () {
        $('.portal-menu').removeClass('slide')
        setTimeout(function () {
            $('.portal-sub-menu').empty();
        }, 800);
        return false;
    });
});
  • 我删除了您的.done()电话 - 因为您的动画是基于CSS发生的,JavaScript不知道它何时完成。
  • 添加了800毫秒setTimeout()调用以等待您的CSS动画完成,然后清空.portal-sub-menu
  • 删除了不必要的.promise().done(...)电话。

希望这有帮助!

答案 1 :(得分:0)

它没有奏效,因为$('.portal-sub-menu').empty();没有被调用。试试这个:

$('.portal-sub-menu .back').on('click', function(){
        $('.portal-menu').removeClass('slide')
        $('.portal-sub-menu').empty();
        return false;
    });    

<强> Demo