1

初学者/中级开发人员在这里并试图掌握跟踪事件侦听器,但发现自己感到困惑和沮丧,因为它总是指向处理事件的库,而不是用户的脚本。事件侦听器手风琴的示例在具有“keyup”事件绑定的选择元素上:

keyup
    div.select
    handler: function (e){return typeof b===i||e&&b.event.triggered===e.typet:b.event.dispatch.apply(f.elem,arguments)}
    isAttribute: false
    lineNumber: 3
    listenerBody: "function (e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)}"
    node: div.select
    sourceName: "https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"
    type: "keyup"
    useCapture: false

显然他们正在使用 jQuery,并且他们通过使用 jQuery 的 $.extend 方法做得非常好,但我仍然不明白为什么事件手风琴(在开发工具中)会指向库而不是自定义脚本?

我在课堂上错过了什么非常基本的东西吗?除了“资源”选项卡中的 CTRL+F 之外,还有哪些方法可以跟踪这些类型的事情,顺便说一句,在实际扩展/添加此侦听器的文件中没有产生任何“选择”的搜索结果 - 很奇怪不是吗?

更新:所以我对此感到很愚蠢,但答案就在我眼前——至少我是这么认为的。在他们开始的自定义脚本的顶部,

define(["jquery"], function($) {

这可能是答案的开始吗?我真正想了解的是,当事件侦听器绑定在上面的代码中时,为什么事件仍然会追溯到库,

$el.textHolder.click(function(e){ 
    ... do stuff ...
}
4

1 回答 1

1

据我了解,这是因为当 jQuery 绑定事件时,它不会直接将其绑定到您的代码,而是绑定到 jQuery 代码,然后将事件分派到您的代码。Chrome devtools 不知道(此时,它似乎正在开发中)jQuery 是如何绑定事件的,所以只显示了第一个处理程序(jQuery)。

我相信,define 调用是CommonJS 模块标准的一部分。参见RequireJS

于 2014-03-31T13:42:25.537 回答