2012-11-11 14 views
8

Próbuję utworzyć niestandardowe zdarzenie JavaScript. Wydarzenie działa poprawnie i strzela, ale obiekt "szczegółowy", który go przekazuję, nie jest dostępny.Niestandardowy identyfikator niestandardowy JavaScript nie jest przekazywany

Oto kod, którego używam do tworzenia i wysyłania zdarzenia;

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

this.dispatchEvent(double_tap); 

Następnie używam jquery, aby dodać detektor zdarzeń do ciała;

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

Robi ogień, a dziennik konsola się dzieje, ale niestety dziennik wyświetla tylko szczegóły zdarzenia w tym pęcherzyków i właściwości nieodwołalnego, ale nigdy „” szczegół obiektu, tak aby informacje te nie są dostępne.

Oto przykład jsbina, na podstawie którego utworzę zdarzenie na zdarzeniu kliknięcia ciała, aby można było zobaczyć konsolę; http://jsbin.com/looseroots/6

Chciałbym móc uzyskać dane z obiektu "detail", gdy zdarzenie zostanie uruchomione. Co ja robię źle? Ja testowałem to w Chrome i Safari na iOS

Odpowiedz

8

Trzeba dostępu do właściwości originalEvent o szczegóły

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

Tak prosta, ale żadna z dokumentacji, którą mogłem znaleźć wyjaśniając metodę CustomEvent, nie wskazała tego. Dziękuję Ci! – Joel

+1

To naprawdę nie jest problem CustomEvent, Wierzę, że jQuery opakowuje zdarzenie DOM w swój własny obiekt Event .. (nie jestem ekspertem jQuery, więc mógłbym się mylić) – lostsource

+0

Może również dodać argumenty danych do programów obsługi jQuery, jeśli wolisz zachować wszystkie kod w dziedzinie jQuery. '$ ('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); 

Możesz tworzyć właściwości w swoim CustomEvent, podczas wysyłania go wysyłasz.

+0

Dziękuję !, Zmarnowałem jak 3 h do czynienia z tym problemem! – Hosar

+0

TO jest złoto! :-) – Mac

Powiązane problemy