我尝试动态删除HTML页面中的li
元素,我使用.remove()
方法但是,如果我检查HTML页面,我可以看到该元素未删除,只是将其可见性更改为display: none;
。
有没有办法我可以DEFINITIVELY从页面中删除元素?
这是代码段(我从li
克隆#ul1
并将其附加到#ul2
):
var oggettoClone = $(this).clone();
oggettoClone.appendTo("#ul2");
$(oggettoClone).bind({
click: function(o) {
var r = confirm("Remove this element?");
if (r == true)
{
$(this).slideUp();
setTimeout(function(){
$(this).remove();
}, 2000);
}
}
});
答案 0 :(得分:1)
使用"完成" slideUp的回调函数 (http://api.jquery.com/slideup/)
$(this).slideUp(function(){
// this part will execute when slideUp is complete.
$(this).remove();
});
答案 1 :(得分:1)
这不起作用的原因是因为你在setTimeout子函数中调用$(this)
。您需要将元素定义为变量以在子函数内访问它。
$(oggettoClone).bind({
click: function(o) {
var r = confirm("Remove this element?");
var t = $(this);
if (r == true) {
$(t).slideUp();
setTimeout(function(){
$(t).remove();
}, 2000);
}
}
});
或关注andi的建议并使用.sideUp()
的回调选项:
$(oggettoClone).bind({
click: function(o) {
var r = confirm("Remove this element?");
if (r == true) {
$(this).slideUp(function(){
$(this).remove();
});
}
}
});