jquery-ui - 如果拖动超过X 秒,jquery可以拖动激发事件

  显示原文与译文双语对照的内容

我有一个组操作系统可以排序元素,隐藏的droppable是删除元素的垃圾,在拖动时显示垃圾。 我只需要在拖动一个元素的时候只显示一个给定的秒数。 我如何实现这个?

现在我的代码是


$(".sortable").sortable({
 start: function (event, ui) { $("#trash").slideDown(); },
 stop: function (event, ui) { $("#trash").slideUp(); }
});
$(".sortable").disableSelection();

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

时间: 作者:

在你可以将这个slideDown延迟到 stop,然后在sortable中设置 refreshPositions 选项,这是很重要的,因为在拖放过程中必须通知 draggable ( 继承自可以拖动) 选项 notified 。

文档中的注释:

如果设置为 true,则所有droppable位置都将在每个。 警告:这解决了高动态页面的问题,但显著降低了性能。

代码:


var delayOpen;

$("#sortable").sortable({
 start: function (event, ui) {
 delayOpen = setTimeout(function () {
 $("#trash").slideDown();
 $("#sortable").sortable("refresh");
 }, 1000);
 },
 stop: function (event, ui) {
 clearTimeout(delayOpen)
 $("#trash").slideUp();
 },
 refreshPositions: true
});
$("#sortable").disableSelection();

$("#trash").droppable({
 over: function (event, ui) {
 console.log('overd')
 },
 drop: function (event, ui) {
 $(ui.draggable).remove();
 }
}).hide();

演示:http://jsfiddle.net/IrvinDominin/7pkRS/

作者:
...