首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在拉斐尔JS中模拟拖拽结束事件?

如何在拉斐尔JS中模拟拖拽结束事件?
EN

Stack Overflow用户
提问于 2012-10-20 05:55:49
回答 1查看 717关注 0票数 5

如果可以使用jquery来完成这项工作,那就更好了。

如下所示:

代码语言:javascript
复制
var child = currentShift.data('endChild');
var newX = child.attr('x');
if (this !== currentShift)
{
    newX = child.attr('x')-day;
}
currentShift.attr({y: child.attr('y'), x: newX, height: child.attr('height')});
$(currentShift.node).mouseup();
child.remove();

我得到了错误,因为子元素是拖动的“this”部分中的移动。但它正被用来与currentShift交互。

我知道还有其他一些方法可以获得类似的效果,但我想知道是否有一些方法可以模仿任意元素的拖曳末端。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-20 08:24:43

看起来您可以通过call()使用对拖动结束函数的引用(在我的示例中为up),只需将一个引用(在我的示例中为currentShift)传递给您的Raphael元素。我的代码现在看起来像这样:

代码语言:javascript
复制
var child = currentShift.data('endChild');
var newX = child.attr('x');
if (this!==currentShift)
{
    newX = child.attr('x')-day;
}
currentShift.attr({y: child.attr('y'), x: newX, height: child.attr('height')});
if (this !== currentShift)
    up.call(child);
else
    up.call(currentShift);
child.remove();

这仍然不是我想要的,因为如果用户一直按住鼠标,即使在元素被移除之后,它也会尝试调用我的拖动移动函数(即,它实际上并没有强制拖动事件停止,它只是调用了up事件,然后给出了许多非致命的错误,因为当尝试调用移动函数时,该元素不再存在。)

如果有人能在未来几天内回答如何强制拖动结束(这样就不会再调用move函数),即使用户继续按住鼠标,我也会接受这个答案。否则,我就接受这个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12982996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档