0

我正在为鼠标事件和触摸事件使用事件规范器。这样,我不需要维护两段代码:一段响应触摸事件,另一段响应触摸事件。

它工作正常,但我不能让它与 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').trigger('customName') 这样的字符串,所以我想知道这是否就是我为此苦苦挣扎的原因。

这是我用于规范化的代码。 https://gist.github.com/2375726

谢谢!

4

2 回答 2

0

我找到了解决方案。我没有使用 live() 函数,而是使用了委托函数。

例如:

$('#wayPointList').delegate('.deleteWayPoint', TouchMouseEvent.UP, function(){
//do something here
});

奇迹般有效!感谢大家的回答/建议。

于 2012-07-23T18:55:28.943 回答
0

不确定 live() 是否可以处理基于委托的自定义方法/事件。委托本身依赖于被触发的实际 DOM 事件,但它们被委托到 document.body 级别。尝试使用 bind() 代替。

于 2012-07-23T17:47:49.007 回答