w jQuery, można wykonać następujące czynności:Zamknięcie wydarzenie delegacja - detektor zdarzeń na DOM rodzica, który obejmuje dzieci/potomków danej klasy
$('#j_unoffered').on('click', '.icon_del', function() {...
Stawia jeden obsługi na elemencie j_unoffered
odpala jeśli każdy potomek element z klasą icon_del
został kliknięty. Dotyczy to również później utworzonego elementu.
Mogę to sprawić, że działa dobrze w Zamknięciu, gdzie kliknięcie znajduje się na samym elemencie.
goog.events.listen(
goog.dom.getElement('j_unoffered'),
goog.events.EventType.CLICK,
function(e) {...
Jak mogę określić cel nadrzędny zdarzeń zamknięciem, który pracuje dla swoich dzieci/potomków w taki sam sposób jak w przykładzie jQuery?
W pewnym sensie potrzebuję użyć setParentEventTarget
w jakiś sposób, ale nie jestem pewien, jak zaimplementować go dla zdarzeń DOM. Większość dokumentacji, którą znalazłem, dotyczy niestandardowych wydarzeń wysyłkowych.
- AKTUALIZACJA -
Zastanawiam się, czy jest coś złego w tym dość proste rozwiązanie:
goog.events.listen(
goog.dom.getElement('j_unoffered'),
goog.events.EventType.CLICK,
function(e) {
if (e.target.className.indexOf('icon_del') !== -1) {...
nadal pozostawia this
związany z rodzicem, ale e.target
umożliwia pracą na około. Piąty argument w listen
(opt_handler) pozwala ci związać this
z czymś innym, więc myślę, że to też jest droga.
+1 na dobry początek, ale jestem przekonany, że pracownicy Google musieli to wcześniej zauważyć, więc niechętnie wymyślam nowe koło. Zobacz także moją aktualizację. – Nick
Dzięki! Zobacz moją zaktualizowaną odpowiedź. – Tony
@Nick, zobaczmy demo: http://jsfiddle.net/g3Vj6/1/ (Musiałem trochę zmienić kod, ponieważ nie ma zamknięcia w jsfiddle, ale podejście jest takie samo). Spróbuj kliknąć różne elementy i zobacz, co się stanie. Sądzę, że drugie podejście jest bardziej poprawne. – Tony