в каких случаях используется addEventListener?
Я часто вижу в коде сабж с параметром "click", например. Но ведь есть свойство onclick. В каких, вообще случаях необходимо навешивать сабж? Какие у него преимущества перед onclick, onload и прочими?
|
Простой ответ: listener'ов навешать можно сколько угодно, а on - только один.
Сложный ты не поймёшь всё равно. |
Цитата:
|
Aetae,
написал такой вот код: div=document.createElement("div") div.innerHTML="foo" div.onclick=function(){this.innerHTML="bar"} div.onmouseout=function(){this.innerHTML="foo"} document.body.appendChild(div) Все работает прекрасно. Не подтвердилась твоя версия. |
а выполнить несколько функций по одному клику?
|
Hatchet,
fu1=function(){console.log(1)} fu2=function(){console.log(2)} fu3=function(){console.log(3)} all=function(){fu1(); fu2(); fu3()} div=document.createElement("div") div.innerHTML="foo" div.onclick=all document.body.appendChild(div) |
Я тоже задаюсь этим вопросом.
Как по мне без разницы. И вроде бы привилегий никаких нету. |
foo,
еще допишите добавление функций к событию и можно фреймворк патентовать :) Ценность addEventListener понятна из названия - add, слышите? |
Цитата:
|
Тебе ответили. Тем, что позволяет провесить неограниченное количество обработчиков, не используя функцию-прокладку.
|
Erolast,
Иными словами -- ничем. |
Цитата:
А параллельно с другими людьми? Неужели до сих пор отличие не понятно стало? Название намекает, но, похоже, Вам нужно разжевывать. Представьте ситуацию: нужно на клик повесить работу скрипта. Если повесите через onclick, через полчаса позвонит коллега и обматерит, что перестал работать его скрипт, который висел на этом элементе. И начнете вместе сооружать прокладки, объединяющие функции. Или это такой троллинг, спрашивать про очевидные вещи? |
Цитата:
|
BETEPAH,
Вы сейчас рассуждаете постфактум. Я не спорю, что если это гавно есть, приходится с ним считаться. Другое дело, что если бы его не было, разраб ничего бы не поерял. Оно не делает ничего, что не может сделать on. Кстати, вы не в курсе, окружение, в которое складываются ф-ции из addEventListener доступны для чтения/изменения? Это объект или замыкание? |
foo,
var clickEvents = $(el).data("events").click; jQuery.each(clickEvents, function(key, handlerObj) { alert(handlerObj.handler) }) Мне не нравится общение с человеком всё_гавно_докажите_мне_обра тное, поэтому я потерял интерес к продолжению этого диалога. |
BETEPAH,
Напишите на js. Я jQuery толком не знаю, тогда я отвечу. |
Почему минус можно ставить только один раз?
|
А теперь фокус:
document.querySelector('head').addEventListener('load', function(e){ console.log(e.target.src + ' loadead') },true) фокус №2: document.addEventListener("DOMContentLoaded", function(event) { console.log("DOM fully loaded and parsed"); }); |
Aetae,
Первый пример не работает. А второй, не понятно чем отличается от onload. Последний, кстати, срабатывает позже. |
<html> <head> <script> document.querySelector('head').addEventListener('load', function(e){ console.log(e.target.src + ' loadead') },true); window.onload = function(event) { console.log("window fully loaded"); }; document.addEventListener("DOMContentLoaded", function(event) { console.log("DOM fully loaded and parsed"); }); </script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js"></script> <head> <body> <img src="http://fc05.deviantart.net/fs71/i/2014/190/2/1/berlin_downfall1945_by_lotharzhou-d7pfolv.jpg" width="100%"> </body> </html> |
Часовой пояс GMT +3, время: 07:17. |