初学者/中级开发人员在这里尝试抓住追踪事件监听器,但发现自己感到困惑和沮丧,因为它总是指向处理事件的库,而不是用户的脚本。来自具有“keyup”事件绑定的select元素的Event Listeners手风琴的示例:
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之外,还有哪些方法可以跟踪这些类型的东西,btw没有在ACTUALLY扩展/添加此监听器的文件中产生“select”的任何搜索结果 - 非常奇怪的是它不是?
更新:所以我对此感到非常愚蠢,但答案恰好在我面前 - 或者我认为。在他们的自定义脚本的顶部,他们以
开头define(["jquery"], function($) {
这可能是答案的开始吗?我真正希望理解的原因是,当事件监听器绑定在上面的代码中时,事件仍会追溯到库,
$el.textHolder.click(function(e){
... do stuff ...
}
答案 0 :(得分:1)
据我所知,这是因为当jQuery绑定一个事件时,它不会将它直接绑定到你的代码,而是绑定到jQuery代码,然后将事件调度到你的代码中。 Chrome devtools不知道(此时,it seems to be in development)jQuery如何绑定事件,所以只显示第一个处理程序(jQuery)。
我认为,定义调用是CommonJS Modules Standard的一部分。另请参阅RequireJS