【问题标题】:Why when a jquery draggable element is removed, I get a wrong count?为什么当一个 jquery 可拖动元素被删除时,我得到一个错误的计数?
【发布时间】:2017-06-07 23:12:48
【问题描述】:

我遇到了在删除 jquery 可拖动元素时发生的意外行为。如果我没有设置 setTimeout,那么剩余元素的计数是错误的。

谁能解释我为什么需要这个延迟?

$("#mytable tr").draggable({ helper: "clone"});

$('#trash').droppable({
    tolerance: "pointer",
    drop: function(event, ui) {
        ui.draggable.remove();

        alert($('#mytable tr').length);
        // --> this gives a wrong number of rows

        //setTimeout(function(){alert($('#mytable tr').length);},0);
        // --> this gives the right number despite the 0 delay
    }
});

http://jsfiddle.net/PBrockmann/ewgevoc5/

【问题讨论】:

    标签: jquery draggable droppable


    【解决方案1】:

    您的警报正在计算当您用鼠标拖动可拖动项目时创建的克隆(如果您检查 DOM 树,您可以看到新的 <tr> 元素被创建为 <table> 元素的子元素) .

    通过调用 setTimeout 函数,它实际上将警报移动到调用堆栈的末尾,这允许 jQuery 代码在警报被调用之前清理克隆。

    【讨论】:

    • 感谢您的解释。我能做得更好吗?
    • 你应该可以调用 ui.helper.remove();在 ui.draggable.remove() 下;也可以删除克隆。
    • 谢谢。确实,您必须删除克隆。现在适用于逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多