jQuery:一次创建多个事件监听器?

时间:2014-10-31 00:08:16

标签: jquery

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

我知道这段代码正在向下滚动,但我确信它是如何工作的。根据{{​​3}},函数接受参数.on( events [, selector ] [, data ], handler )。但是,在我提供的示例代码中,on()方法中存在哈希。应该是哪个参数?

这段代码实际上是一次创建多个eventListener还是还有其他事情我不明白?

2 个答案:

答案 0 :(得分:2)

在所示的jQuery .on()方法的格式中,第一个参数是一个普通的javascript对象,其对象的键是"事件名称"并且它们的值是在发生该类型的事件时执行的函数。在您的示例中,如果检测到mousewheel事件,则会调用名为scrollHandler的函数。如果检测到keydown事件,将调用名为keyHandler的函数(等等)。

这种技术仅仅是一个接一个地拥有多个.on()语句的捷径。

答案 1 :(得分:1)

您的使用符合.on的{​​{3}}来电签名:

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

events的说明是:

  

类型:PlainObject
  字符串键表示一个或多个空格分隔的事件类型和可选命名空间的对象,值表示要为事件调用的处理函数。