【问题标题】:Adding a delay to droppable event为可放置事件添加延迟
【发布时间】:2012-08-02 22:14:18
【问题描述】:

我有一个带有 dropover 事件处理程序的 droppable 元素。在 droppable 上拖动一个元素会展开一个节点。但是,我想添加一个延迟,以便节点不会立即展开,即在展开之前,您必须将可拖动对象放在可放置对象上一秒钟。

droppable.over = function(event, ui) {
    // expand node if dragover lasts 1000 milliseconds
    node.expand();
}; 

我的第一个想法是在node.expand() 上简单地使用setTimeout,但这并没有达到我想要的效果,它只是延迟了节点扩展。看起来我没有任何配置可以实现这一点,所以我想知道我该怎么做。

【问题讨论】:

  • 您可能会考虑使用一个全局变量,将 = 设置为超时,并在鼠标熄灭时使用另一个函数来取消 setTimeout 作业。
  • 不确定您是否可以调整以下内容,以便检测用户是否在拖动元素时悬停。 cherne.net/brian/resources/jquery.hoverIntent.html

标签: javascript jquery jquery-ui jquery-ui-draggable jquery-ui-droppable


【解决方案1】:

可能是这样的吗?

var globalTimer;

//..
droppable.over = function(event, ui)
{
    globalTimer = setTimeout(function(){node.expand()}, 1000);
},
droppable.out = function(event, ui)
{
    clearTimeout(globalTimer);
};

【讨论】:

  • 谢谢,这似乎是最好的选择。
【解决方案2】:

尝试添加此setTimeout(function () { node.expand() }, 1000);

但我可能误解了你,你希望节点稍后出现还是仅在它在可放置 1000 毫秒时才出现?

【讨论】:

  • 我已经按照我在问题中的描述进行了尝试,但这不是我正在寻找的行为。我只希望节点在可放置 1000 毫秒时展开。
猜你喜欢
  • 1970-01-01
  • 2014-10-21
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 2021-12-31
  • 2018-04-18
相关资源
最近更新 更多