Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2014, 18:45
Аспирант
Отправить личное сообщение для levshkatov Посмотреть профиль Найти все сообщения от levshkatov
 
Регистрация: 03.09.2014
Сообщений: 61

Два обработчика одного и того же события
Дилемма появилась одна. Есть функция, внутри которой необходимо повесить обработчик события: document.onclick. В этот обработчик происходит передача аргумента данной функции. Также необходимо данный обработчик поставить и снаружи функции, уже естественно без аргумента. Вопрос, что делать?

Если я правильно понимаю, нельзя оставить все как есть, то есть два обработчика одного и того же события. Вызывать из внешнего обработчика внутренний, заключенный в функцию тоже не получится, т.к. эта функция находится в другой функции.
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2014, 19:09
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Если нет тестового примера то советую обратится к ...
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2014, 19:17
Аспирант
Отправить личное сообщение для levshkatov Посмотреть профиль Найти все сообщения от levshkatov
 
Регистрация: 03.09.2014
Сообщений: 61

Да, вы правы.
function test(arg){
	document.onclick = function(){
		alert(arg);
	}
}

test('Hello');

document.onclick = function(){
	alert('Bye');
}


Мне необходимо выполнение обоих обработчиков. Естественно, не в тестовом примере у обработчиков разный код (не два alertа).
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2014, 19:43
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

объясни, когда это может понадобиться
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2014, 19:43
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<script>
function test(arg) {
  document.addEventListener("click", function () {
    alert(arg);
  });
}
test("hello");
document.addEventListener("click", function () {
  alert('Bye');
});
</script>

Так?

Последний раз редактировалось tsigel, 07.10.2014 в 19:46.
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2014, 20:05
Аспирант
Отправить личное сообщение для levshkatov Посмотреть профиль Найти все сообщения от levshkatov
 
Регистрация: 03.09.2014
Сообщений: 61

tsigel,
Да, то что надо. Только вопрос, true или false писать не надо? Просто в документации указано это обязательным.
Upd. Не туда посмотрел. Этот параметр необязательный. Спасибо за помощь!
bes,
У меня есть много объектов, для которых написана единая функция. Обрабатывать событие надо как и для этих объектов в функции, так и для остального кода. Хочется чтобы все, что относится к данным объектам находилось внутри функции, а не разбросано по обработчикам.

Последний раз редактировалось levshkatov, 07.10.2014 в 20:15.
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2014, 20:14
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

levshkatov,
Отсутствие параметра - тоже самое почти что false. В данном примере я просто показал алгоритм, в своём коде я передаю false.
Ответить с цитированием
  #8 (permalink)  
Старый 09.10.2014, 08:39
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

true или false надо писать когда надо писать true или false.

capturing phase - щелчок валится на землю с дерева ломая ветки
bubbling phase - щелчок убился об землю и его душа воспарила

http://javascript.info/tutorial/bubbling-and-capturing

щелчком может быть что подобно щелчку

Когда вы хотите поймать событие в самом начале - то надо ставить true. Например на элементе который вообще ничего не должен пропускать через себя (в css есть подобный селектор). Когда все равно или когда вы хотите поймать событие на выходе из пике - то false. В этом случае объект события обогащается всем обычно присущим и полезным барахлом.
Ответить с цитированием
  #9 (permalink)  
Старый 09.10.2014, 13:02
Аспирант
Отправить личное сообщение для levshkatov Посмотреть профиль Найти все сообщения от levshkatov
 
Регистрация: 03.09.2014
Сообщений: 61

Спасибо большое за подобное объяснение!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать два события на одно нажатие кнопки mixt Events/DOM/Window 11 30.09.2017 20:44
можно ли на объект повесить два события одновременно? andrew_F Общие вопросы Javascript 5 30.04.2012 14:51
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
Два блока div разъезжаются при скроллинге окна браузера. call007 jQuery 0 03.04.2011 16:21
Как на два события назначить одну функцию shaltay jQuery 2 28.02.2011 15:50