2012-11-11 38 views
8

我想創建一個自定義JavaScript事件。該事件正常工作並正確觸發,但我傳遞的「詳細信息」對象不可用。Javascript CustomEvent細節沒有通過

下面是我用來創建和分派事件的代碼;

var double_tap = new CustomEvent("doubleTap", { 
    detail: { 
     hello: 'world' 
    }, 
    bubbles: true, 
    cancelable: true 
}); 

this.dispatchEvent(double_tap); 

然後,我正在使用jquery添加一個事件偵聽器的身體;

$('body').on('doubleTap', function(e) { 
    console.log(e); 
}); 

它確實火了,控制檯日誌發生,但不幸的是日誌只輸出了事件的細節,包括泡沫和取消特性,但從來沒有「細節」的對象,這樣,信息就不能訪問。

下面是一個jsbin的例子,即時通過在body的click事件上創建事件,以便您可以看到控制檯; http://jsbin.com/looseroots/6

我希望能夠在事件觸發時從「detail」對象獲取數據。我究竟做錯了什麼?我已經在Chrome中進行了測試,Safari瀏覽器在iOS

回答

8

您需要訪問originalEvent屬性的細節

console.log(e.originalEvent.detail); 
+0

這麼簡單,但我找不到解釋CustomEvent方法的文檔指出了這一點。謝謝! – Joel

+1

這不是一個真正的CustomEvent問題,我相信jQuery將一個DOM事件封裝到它自己的Event對象中。(我不是jQuery專家,所以我可能是錯的) – lostsource

+0

也可以添加數據參數給jQuery處理程序,如果想保留所有jQuery領域內的代碼。 ('doubleTap',function(e,arg1,arg2)' – charlietfl

4
obj.addEventListener("eventName", function(e) { 
console.log(e.your_property) 
}) 

var event = new CustomEvent("eventName"); 
event.your_property = { key: "value" }; 

obj.dispatchEvent(event); 

您可以在您發送它時調度您的CustomEvent中創建屬性。

+0

謝謝!,我浪費了3小時處理這個問題! – Hosar

+0

這是黃金!:-) – Mac