javascript - 自定义删除 DOM 元素问题

标签 javascript jquery jquery-ui

我在删除某些 HTML 元素时遇到一些问题。

简单介绍一下我的代码。

我正在克隆 <ul>然后使用弹出对话框显示其内容。然后在 2dim 数组中保存 <li>原始对象和克隆对象之间的对应对象。因此,从克隆中删除并确认会得到原始 <ul> 中的结果。 .

我遇到的问题是在添加 jQuery 动画并在其回调函数中删除时可能是因为“for”循环。然后,当在不关闭对话框窗口的情况下第二次额外删除时,由于删除元素不当而出现错误!

如果您从一开始就没有亲眼目睹,请尝试多玩一点,不会太久 直到你看到它!

这就是区别 在没有 .hide 动画的情况下工作:http://jsfiddle.net/TTGr7/1/

带动画的 buggy :http://jsfiddle.net/TTGr7/2/

关键部分和区别在于代码的该部分:

 del.click(function() {
        var len = markedForDel.b.length;
        if (len > 0) {
            var confirmation = confirm('Delete marked groups');
            if (confirmation) {
                for (var i = 0; i < len; i++) {
                    markedForDel.a[i].remove();
                    markedForDel.b[i].remove();
                    //markedForDel.a.splice(i,1);
                    //markedForDel.b.splice(i,1);
                }
            }
        }
    });

del.click(function() {
    var len = markedForDel.b.length;
    if (len > 0) {
        var confirmation = confirm('Delete marked groups');
        if (confirmation) {
            for (var i = 0; i < len; i++) {
                markedForDel.a[i].hide(function(){
                    markedForDel.a[i].remove();
                });
                markedForDel.b[i].remove();
                //markedForDel.a.splice(i,1);
                //markedForDel.b.splice(i,1);
            }
        }
    }
});

所以我真的需要保留 .hide 动画并仍然正确删除组。

所以我真的很依赖你的帮助, BR

最佳答案

如果在调用 hide 回调时 for 循环已经增加了 i 的值,那么您将传递错误的元素来删除。试试这个:

markedForDel.a[i].hide(function() {
    $(this).remove();
});

在 hide 方法的回调中,this 设置为刚刚隐藏的元素。

关于javascript - 自定义删除 DOM 元素问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8808857/

相关文章:

javascript - 如何将隐藏信息发送到打印机进行打印

javascript - 使用 javascript 删除任何特定的 html 代码

jquery - 如何强制 jQuery UI 忽略 Accordion 中的某些元素

javascript - vue 组件中的 d3.js - 如何将鼠标事件挂接到元素?

javascript - JS/TS必须使用bind但仍需要原来的this

python - Django:进行 ajax 调用时出现错误 500(内部服务器错误)

javascript - jQuery Validate 的自定义验证(二合一方法)

jquery - 如何在 droppable 中拖动后更改类 css

javascript - 将可拖动对象定位在父级的中心

javascript - 参数可以从 Rails 应用程序 Controller 传递到 Javascript 中吗?