2016-07-08 2 views
2

Я изучаю javascript и jquery, немного запутавшись в правильном определении обработчика событий.Являются ли методы рассмотрены обработчики событий?

До сих пор я читал .on() (например) технически method, но он обрабатывает события. Так будет .on() считать обработчиком события? Или это прослушиватель событий, потому что функция внутри него является обработчиком?

ответ

1

Нет, обработчик событий происходит, когда происходит событие. Метод .on() - это водопровод, который прокладывает это вверх.

Так, например, если у вас есть:

function dealWithTheClick(){ 
    alert('Clicked!'); 
} 

$('#someButton').on('click', dealWithTheClick); 

Функция dealWithTheClick является обработчик события, потому что это функция, которая «ручки» это событие, которое срабатывает, когда произошел щелчок.

+0

Так нет слушателя в этом случае? – user2684452

+0

Нет, «слушатель» и «обработчик» являются взаимозаменяемыми терминами в случае событий. Я полагаю, можно утверждать, что «слушатель» - это все, что слушает событие, в то время как «обработчик», вероятно, делает что-то определенное (например, делает что-то, а затем останавливает пузырь событий или тому подобное), но на практике я видел их используется взаимозаменяемо. – Paul

6

№jQuery - это метод, который добавляет слушателей событий. Это не обработчик событий и не добавляет обработчики событий.

event listener является функцией, которая является invoked, когда определенный вид event является dispatched на определенном элементе или один из его потомков.

function eventListener() { 
 
    console.log("I'm an event listener"); 
 
} 
 
window.addEventListener('load', eventListener);

event handler какое-то специальный слушатель событий:

  • Элемент может иметь только один обработчик событий в то время, для каждого вида события
  • Это вызывается во время фазы пузырьков, а не захвата.
  • Его можно сохранить в форме raw uncompiled, которая при компиляции будет работать с очень странной областью.

function eventHandler() { 
 
    console.log("I'm an event handler"); 
 
} 
 
window.onload = eventHandler;

var eventHandler = 'console.log("I\'m a raw uncompiled event handler");'; 
 
document.body.setAttribute('onload', eventHandler);

+0

'Элемент может иметь обработчик событий только для каждого вида событий' <- Что это значит? – Musa

+1

@Musa Например, вы можете сделать 'element.onclick = handler1'. Затем, если вы установите другой обработчик 'element.onclick = handler2',' handler1' больше не будет вызываться. Вы не можете одновременно использовать несколько обработчиков для одного и того же типа события. – Oriol

+3

Я думаю, вы хотели сказать «только один ** обработчик событий за один раз». Я понимаю различие, которое вы делаете между «обработчиком» и «слушателем», но неофициально эти два слова используются несколько взаимозаменяемо, а «слушатель» выполняет «обработку» события в том смысле, что он может отменить свое поведение по умолчанию, остановить его пузырь, и т.п.(Кроме того, jQuery не добавляет событие «обработчик» по вашему определению, если он работает в действительно старом браузере, который не поддерживает '.addEventListener()' или '.attachEvent()'?) – nnnnnn

Смежные вопросы