Raphaël(及其继任者,Snap)都有drag()
方法(Raphaël,Snap),并声称:
此外,还会触发以下
drag
个事件:开始时为drag.start.<id>
,结束时为drag.end.<id>
,每次移动都会drag.move.<id>
。当元素被拖过时,另一个元素drag.over.<id>
也会被触发。
问题是,那些附加事件是在上触发的吗?我尝试了document.addEventListener('drag.move.0')
和paper.node.addEventListener('drag.move.0')
,似乎都没有触发。我需要听哪些对象来获取那些全局拖拽事件?
答案 0 :(得分:2)
好吧,做了我自己的潜水源,并发现它有点纠结,正如伊恩所说的那样。首先,在Snap中,事件名称更改为snap.
前缀(source)。
查看该源代码,Snap正在使用自己的事件库(“Eve”),它根本不使用本机侦听器,因此事件不会绑定到任何对象,它们只是为了事物的命名空间你有兴趣知道:
eve.on('snap.drag.start.0', function(el) {
console.log('Item 0 started dragging!');
});
传递给侦听器的参数是传递给原始start_scope
调用的drag()
,或者是当时未设置的被拖动元素。
eve
库允许在其范围内使用通配符,例如:
eve.on('snap.drag.start.*', function(el) {
console.log('Item ' + el.id + ' started dragging!');
});
应该听取所有拖动动作。