2014-10-31 3 views
1
$(document).on({ 
    "mousewheel": scrollHandler, 
    "DOMMouseScroll": ("onmousewheel" in document) ? null : scrollHandler, // Firefox 
    "keydown": keyHandler, 
    "mousedown": function(e) { 
     if(e.button === 1) { 
     e.preventDefault(); 
     return false; 
     } 
    } 
    }); 

Я знаю, что этот код прослушивает прокрутку вниз, но я действительно уверен, как это работает. Согласно documentation for on() функция принимает аргументы .on(events [, selector ] [, data ], handler). Однако в приведенном ниже примере кода присутствует хэш, входящий в метод on(). Какой параметр должен быть?jQuery: Создание нескольких прослушивателей событий одновременно?

Этот код по существу создает несколько eventListeners сразу или есть что-то еще происходящее Я не понимаю?

ответ

2

В показанном примере jQuery .on() первый параметр представляет собой простой объект javascript с ключами объекта, которые являются «именами событий», а их значения являются функциями, которые выполняются, если происходит событие такого типа. В вашем примере, если обнаружено событие mousewheel, будет вызвана функция с именем scrollHandler. Если обнаружено событие keydown, будет вызвана функция под названием keyHandler (и т. Д.).

Этот метод является просто ярлыком для нескольких операторов .on() один за другим.

+0

Прохладный, спасибо. В этом контексте вы также можете объяснить, как «работает» («onmousewheel» в документе)? –

+1

@ chopperdrawlion4 Счастливый мой друг. Это то, что называется «тройным» выражением. Сначала это логическое выражение, за которым следуют два значения с «двоеточием» между ними. Если логическое выражение истинно, все значение value1 else value2. На практике этот фрагмент кода спрашивает: «Если у нас есть свойство в объекте document, называемом« onmousewheel », тогда для DOMMouseScroll не будет никакого обработчика, иначе DOMMouseScroll будет обрабатываться функцией scrollHandler. – Kolban

1

Использование соответствует second вызывающей подписи .on:

.on(events [, selector ] [, data ]) 

Описание events является:

Тип: PlainObject
Объект, в котором струна ключи представляют собой одну или несколько типы событий, разделенных пробелами, и необязательные пространства имен, а значения представляют собой функцию обработчика, которая должна быть вызвана для события (ов).

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