我正在为鼠标事件和触摸事件使用事件规范器。这样,我就不需要维护两段代码:一段响应触摸事件,另一段响应接触事件。
它工作得很好,但我不能让它与live()函数一起工作。
在规范化过程结束时,规范化事件以这种方式触发:
var touchMouseEvent = normalizeEvent(type, event, event.pageX, event.pageY);
$(event.target).trigger(touchMouseEvent);
我试着用这些电话让现场活动发挥作用:
$('.MyClass').live('TouchMouseEvent', function(){...});
$('.MyClass').live('normalizeEvent', function(){...});
$('.MyClass').live('touchMouseEvent', function(){...});
但什么都不管用。
通常,自定义事件的触发器被调用为类似$('.Class').trick('customName')的字符串,所以我想知道这是否是我遇到困难的原因。
这是我用于规范化的代码。https://gist.github.com/2375726
谢谢!
不确定live()是否能处理基于委托的自定义方法/事件。委派本身依赖于被激发的实际DOM事件,但它们被委派到document.body级别。请尝试改用bind()。
我找到了一个解决方案。我没有使用live()函数,而是使用delegate函数。
例如:
$('#wayPointList').delegate('.deleteWayPoint', TouchMouseEvent.UP, function(){
//do something here
});
工作起来很有魅力!感谢大家的回答/建议。