2012-11-11 12 views
8

Sto tentando di creare un evento javascript personalizzato. L'evento funziona e si attiva correttamente, ma l'oggetto "dettagli" che sto passando non è disponibile.Javascript CustomEvent dettaglio non viene passato

Ecco il codice che sto utilizzando per creare e inviare l'evento;

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

this.dispatchEvent(double_tap); 

Quindi sto utilizzando jquery per aggiungere un listener di eventi al corpo;

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

Lo fa fuoco e il log della console accade, ma purtroppo il registro emette solo i dettagli dell'evento, tra cui le bolle e le proprietà annullabili, ma mai l'oggetto 'dettaglio', in modo che l'informazione non è accessibile.

Ecco un esempio di jsbin, sto creando l'evento nell'evento click del corpo in modo da poter vedere la console; http://jsbin.com/looseroots/6

Mi piacerebbe essere in grado di ottenere i dati dall'oggetto 'dettagli' quando l'evento è attivato. Che cosa sto facendo di sbagliato? Ho testato questo in Chrome e Safari su iOS

risposta

8

, è necessario accedere alla proprietà originalEvent per i dettagli

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

Così semplice, ma nessuno della documentazione che ho trovato che spiega il metodo CustomEvent lo ha sottolineato. Grazie! – Joel

+1

Questo non è un problema di CustomEvent, credo che jQuery avvolga un evento DOM nel proprio oggetto Event .. (non sono esperto di jQuery quindi potrei sbagliarmi) – lostsource

+0

Puoi anche aggiungere argomenti di dati ai gestori jQuery se preferisci mantenere tutto codice all'interno di jQuery realm. '$ ('body'). on ('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); 

È possibile creare proprietà in CustomEvent, quando si invia l'invio.

+0

Grazie !, ho sprecato come 3 ore che si occupano di questo problema! – Hosar

+0

QUESTO è oro! :-) – Mac

Problemi correlati