Два обработчика одного и того же события
Дилемма появилась одна. Есть функция, внутри которой необходимо повесить обработчик события: document.onclick. В этот обработчик происходит передача аргумента данной функции. Также необходимо данный обработчик поставить и снаружи функции, уже естественно без аргумента. Вопрос, что делать?
Если я правильно понимаю, нельзя оставить все как есть, то есть два обработчика одного и того же события. Вызывать из внешнего обработчика внутренний, заключенный в функцию тоже не получится, т.к. эта функция находится в другой функции. |
Если нет тестового примера то советую обратится к ...
![]() |
Да, вы правы.
function test(arg){ document.onclick = function(){ alert(arg); } } test('Hello'); document.onclick = function(){ alert('Bye'); } Мне необходимо выполнение обоих обработчиков. Естественно, не в тестовом примере у обработчиков разный код (не два alertа). |
объясни, когда это может понадобиться
|
<script> function test(arg) { document.addEventListener("click", function () { alert(arg); }); } test("hello"); document.addEventListener("click", function () { alert('Bye'); }); </script> Так? |
tsigel,
Да, то что надо. Только вопрос, true или false писать не надо? Просто в документации указано это обязательным. Upd. Не туда посмотрел. Этот параметр необязательный. Спасибо за помощь! bes, У меня есть много объектов, для которых написана единая функция. Обрабатывать событие надо как и для этих объектов в функции, так и для остального кода. Хочется чтобы все, что относится к данным объектам находилось внутри функции, а не разбросано по обработчикам. |
levshkatov,
Отсутствие параметра - тоже самое почти что false. В данном примере я просто показал алгоритм, в своём коде я передаю false. |
true или false надо писать когда надо писать true или false.
capturing phase - щелчок валится на землю с дерева ломая ветки bubbling phase - щелчок убился об землю и его душа воспарила http://javascript.info/tutorial/bubbling-and-capturing щелчком может быть что подобно щелчку Когда вы хотите поймать событие в самом начале - то надо ставить true. Например на элементе который вообще ничего не должен пропускать через себя (в css есть подобный селектор). Когда все равно или когда вы хотите поймать событие на выходе из пике - то false. В этом случае объект события обогащается всем обычно присущим и полезным барахлом. |
Спасибо большое за подобное объяснение!
|
Часовой пояс GMT +3, время: 01:56. |