【发布时间】:2011-01-25 22:12:19
【问题描述】:
是否可以在 JavaScript 中更改事件的type?
在这种情况下,我在画布上使用 jQuery 触发事件,但在渲染此画布中的特定元素上触发事件,例如绘制的形状或图像。
mousemoveevent ---> [canvas] -> [find element] ---> mousemoveoverelementevent
基本上,我在整个画布上捕获 onmousemove 事件:
$('canvas').bind('mousemove'........
但是画布中不存在 DOM,所以我希望它转换(以便在此过程中稍后进行):
$('canvas').bind('mousemoveOverElement'........
$('canvas').bind('mouseenterOnElement'........
$('canvas').bind('mouseleaveOnElement'........
然后分配类似
的东西e.element = 'imageAtACertainPositionInTheCanvas'
我更喜欢传递修改后的事件而不是分配新的回调。
【问题讨论】:
-
如果您需要绘制的元素来触发事件,您使用画布而不是 SVG 是否有特定原因?
-
@robertc,是的,我对“元素”进行的主要是像素操作。几乎没有向量。
-
与其尝试改变事件名称,不如简单地创建并触发您希望的类型的新事件。
-
@Phrogz,关于传递事件的“匿名”行为和与 jQuery 的兼容性,我更喜欢传递具有一些更改字段的相同事件对象,而不是一个全新的。这将防止调用者收到意外或丢失的数据或格式。
-
你不能创建一个自定义事件并简单地将所有其他属性复制到其中吗?
标签: javascript jquery html canvas