2012-07-23 103 views
0

我正在爲鼠標事件和觸摸事件使用事件規範器。這樣,我不需要維護兩段代碼:一段代碼可以響應觸摸事件,另一段代碼可以響應觸摸事件。Live()與jQuery中的自定義事件

它工作正常,但我不能讓它與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

請不要使用'.on()'作爲'.live()'。 – Drakkainen 2012-07-23 17:45:07

+0

這樣做,但它正在做一些測試,我正在使用on()進行這些測試,但它不起作用。 – Alexandre 2012-07-23 17:46:32

+0

自定義事件在jQuery 1.3.x中的'.live'中不起作用。你使用的是什麼版本的jQuery? – 2012-07-23 17:49:08

回答

0

不確定live()是否適用於基於委派的自定義方法/事件。代表團本身依賴實際的DOM事件被解僱,但他們被委託給document.body級別。嘗試使用bind()代替。

+0

我認爲你是對的。我使用.delegate(),它工作正常。請參閱下面的答案。 – Alexandre 2012-07-23 18:56:30

0

我找到了解決方案。而不是使用live()函數,我使用委託函數。

例如:

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

就像一個魅力! 謝謝大家的回答/建議。