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演示: