我正在使用Raphael JS 2.0,并希望模拟另一个元素拖动的结束,然后删除正在处理的当前元素。如果可以使用jquery完成,那也很好。
这样的事情:
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
进行互动。
我知道还有其他方法可以获得类似的效果,但我想知道是否有某种方法可以模仿任意元素的拖尾。
答案 0 :(得分:1)
看起来你可以使用up
的拖拽结束函数(在我的情况下为call()
)引用只是将引用(在我的情况下为currentShift
)传递给你的Raphael JS元件。我的代码现在看起来像这样:
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函数时元素不再存在。)
如果有人可以在接下来的几天内提供关于如何强制拖动结束的答案(因此不再对移动功能进行调用),即使用户继续按住鼠标,我也会接受那个答案。否则,我会接受这个。