jQuery 性能问题,通过为新元素启用拖放

jquery performance issues by enable drag & drop for new elements

本文关键字:元素 拖放 启用 新元素 问题 性能 jQuery      更新时间:2023-09-26

我有一个带有一些拖放功能的小型Web应用程序。想象一下一个小订单系统,您可以在其中说订单 1(可拖动)将由员工 2(可拖放)完成。这工作正常。但:

每 20 秒。我通过 AJAX 向数据库询问新订单。这些新订单也将是可拖动的。如果另一所大学下达了命令 en 员工 每个员工的订单清单也不会加载。要在ajax请求后启用拖放,我必须运行:

$('.order').draggable({
..
});

$('.employee').dropable({
..
});

因此,jquery 函数每 20 秒通过孔 DOM 遍历一次。10-15分钟后,应用程序变得非常慢。您知道如何为该过程上油吗?是否可以给出一个绝对的声明,即即使此元素将在第一次注册后创建,每个 .order 类都是可拖动的?

我认为问题是页面上已有的元素可以一遍又一遍地拖动。我认为一个解决方案是将一个类分配给那些已经拥有它的人:

$('.order').each(function() {
    var element = $(this);
    if ( !element.hasClass('event-already-attached')) {
        element.addClass('event-already-attached').draggable({
        })
    }
});

感谢@Jonas你的好主意做到了!

您可以使用该作业的类ui-droppableui-draggable

$('.order').each(function() {
    var element = $(this);
    if ( !element.hasClass('ui-droppable')) {
    element.droppable({
    ...
}
});