jQuery UI排序时的可排序性能
我有一个日历在生产中使用,60天,每天最多5个可排序项目,因此有300个可排序项目。日期是jQuery UI排序时的可排序性能,jquery,jquery-ui,jquery-ui-sortable,Jquery,Jquery Ui,Jquery Ui Sortable,我有一个日历在生产中使用,60天,每天最多5个可排序项目,因此有300个可排序项目。日期是元素,事件是s 一天内排序和从一天拖到另一天都很慢。当元素进入新的一天或经过另一个可排序的项目时,它会冻结一点 延迟似乎与天数和可排序项目的数量有关 这是jQuery代码 $('.calendar-schedule-day').sortable({ items: ".service-trip, .calendar-event", connectWith: ".calendar-schedul
元素,事件是
s
一天内排序和从一天拖到另一天都很慢。当元素进入新的一天或经过另一个可排序的项目时,它会冻结一点
延迟似乎与天数和可排序项目的数量有关
这是jQuery代码
$('.calendar-schedule-day').sortable({
items: ".service-trip, .calendar-event",
connectWith: ".calendar-schedule-day"
});
如何减少排序时出现的延迟
更多信息
当chrome连续多次调用布局
和重新计算样式
时,会出现以下警告:
布局-详细信息持续时间15.000 ms(36.86) s)
注意:强制同步布局可能是性能瓶颈。
布局无效
更新:-它的速度太慢了,我不知道它是否重现了问题。在生产中不是这样的。但是,如果我开始从示例中删除html(如weeks),那么我可能无论如何都无法重现问题。通过在调用sortable之前隐藏所有可排序元素,然后再次显示它们,我似乎可以更快地解决问题
$('.calendar-schedule-day').hide();
$('.calendar-schedule-day').sortable({ ... });
$('.calendar-schedule-day').sortable({ connectWith: ... });
$('.calendar-schedule-day').show();
更好的修复方法
使用.sortable()时,只需使用此选择器$('.calendar schedule day:visible')
而不是$('.calendar schedule day')
似乎隐藏元素会扰乱可排序性,因此我们将只对可见元素进行排序。Chrome的时间线检查器显示,Layout
和recreactestyle
在上述点上被连续调用了大约100次。请提供@jsfiddle的Dom速度太慢了,我无法判断它是否重现了这个问题。在生产中不是这样的。但是,如果我开始从示例中删除html(比如几周),那么我可能无论如何都无法重现这个问题jsfiddle@Benjamin将代码发布到某个地方,即使它运行缓慢,我们也需要查看代码。如果你不在星期天露面,那么你就得在那里修理一些东西,但是我认为这样你可以大大提高速度。亲爱的,我想你做到了。只是需要在这里做更多的测试来确认。到目前为止,这看起来很棒。伯纳多,非常感谢你。它现在在chrome中肯定工作得很顺利。我还检查了ie10,它的速度非常快。很酷。再次感谢。不客气,我还不知道为什么,但似乎那些看不见的物体被分类是问题所在。