Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 无法删除克隆的列表元素_Jquery_Clone - Fatal编程技术网

Jquery 无法删除克隆的列表元素

Jquery 无法删除克隆的列表元素,jquery,clone,Jquery,Clone,我正在克隆一个菜单中的列表项,我有一个点击操作,该操作位于应该删除克隆元素的反向链接上 但它们并没有被删除,每次我点击一个菜单项,子菜单就会不断增长 我尝试过不同的方法: $('.portal-sub-menu').empty() $('.portal-sub-menu').remove() $('.portal-sub-menu').children().remove() 你可以在这里看到小提琴: 为什么我不能删除克隆的项目?它不起作用,因为$(“.portal子菜单”).empty()未被

我正在克隆一个菜单中的列表项,我有一个
点击
操作,该操作位于应该删除克隆元素的反向链接上

但它们并没有被删除,每次我点击一个菜单项,子菜单就会不断增长

我尝试过不同的方法:

$('.portal-sub-menu').empty()
$('.portal-sub-menu').remove()
$('.portal-sub-menu').children().remove()
你可以在这里看到小提琴:


为什么我不能删除克隆的项目?

它不起作用,因为
$(“.portal子菜单”).empty()未被调用。请尝试以下操作:

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

这里有一个固定的JSFIDLE:

更新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不知道何时完成
  • 添加了一个800ms
    setTimeout()
    调用,以等待CSS动画完成,然后清空
    .portal子菜单
  • 删除了不必要的
    .promise().done(…)
    调用

希望这有帮助

我知道这很有效。但是我正在制作一个滑入/滑出菜单,并在它滑出之前删除菜单项。这就是为什么它在
.promise().done()
中的原因。您应该将背景设置为默认颜色。这将阻止这种效果。这有什么帮助?在滑块关闭之前,内容仍然是空白的。是的,但您可以将颜色设置为容器本身。我仍然不明白这会有什么帮助。在菜单滑出视图之前,不应删除内容/菜单项。这太棒了。为什么我们不能在这里使用
.delay(800)
?我可能错了,但我相信
.delay()
只适用于jQuery中排队的项目(即动画)。下面是一个JSFIDLE演示: