Образец А:
1) Ложь
2) Ложь
3) Ложь
Событие сработает только один раз, поскольку к одному элементу DOM прикреплено только одно событие «щелчка». Даже если событие произошло от дочернего элемента (такого как img), оно на самом деле не срабатывает, пока всплывающее событие не попадет в родительский элемент. В этом случае «this» будет элементом TD (так как он был источником события, а это , называемое функцией). Но если вы посмотрите на первый аргумент, переданный событием, и проверите его данные, вы увидите, что e.target обычно является элементом IMG.
var tdClick = function(e){
console.log(e.target); // typically the IMG element
}
Я говорю «типично», потому что некоторые браузеры называют исходный элемент другим в объекте сведений о событии. В некоторых браузерах это 'target', в некоторых это 'originalTarget', и их может быть больше.
Образец B:
1) Да, imgClick запускает изображение. Не уверен, что вы подразумеваете под 2-й частью вашего заявления. 'this' при обработке событий DOM будет тем элементом DOM, который вызвал событие. Таким образом, в данном случае «this» является элементом IMG (который также является e.target)
2) Ложь, как указано ранее:)
Образец C:
addEventListener делает то же самое, что и добавление вызовов функций вручную в атрибут «onclick» вашего элемента. Таким образом, поведение такое же ... с оговоркой, что я на самом деле не знаком с третьим аргументом addEventListener (для Mozilla Dev Center , он называется useCapture и имеет отношение к пузырям, я м просто не знаком с этим)
Я бы порекомендовал получить либо FireFox с расширением Firebug, либо Chrome и просто протестировать некоторые из них. Внутри функций событий просто выполните console.log (this) или console.log (e) и т. Д., И их консоли разработки позволят вам проверить все мелкие детали объекта. Это чрезвычайно полезно. Просто не забудьте вынуть ваши операторы console.log (), когда вы закончите, потому что в IE они будут хрипеть.