2

大多数 jQuery 代码使用匿名函数,例如:

jQuery('someelements').someEvent(function() {
    // code here
});

这很好用,但在调试时效果不佳。我尝试使用 Firefox Firebug 和 Chrome 的检查器查找一些匿名函数的来源,并使用 pause javascript 功能,但它调用的实际代码在 jQuery js 文件中,并且单步执行代码永远不会告诉你是哪一行,甚至是什么.js 文件添加了该事件。如何查看操作的定义位置?

4

5 回答 5

1

尝试使用 Firebug 的非缩小版本jQuery并使用profileFirebug 中的功能来查找 jQuery 源代码中在代码中发生事件时调用的确切行。

如果您的意图是找到一些 jQuery 选择器或函数实现的实现,请参考这个惊人的资源:http:
//www.keyframesandcode.com/resources/javascript/deconstructed/jquery/

于 2012-10-19T04:12:35.370 回答
1

有一个 Google Chrome/Firefox 插件可以让您查看由 jQuery 或其他(特定)库注册的事件:Visual Event

类似的问题:Firefox extension to find which Javascript event is bound to an inspected element?

于 2012-10-19T03:55:58.313 回答
0

我发现有用的一件事是给事件处理程序一个名称,尽管它没有在其他任何地方被调用。这样就更容易在分析工具中识别它。

例如

jQuery('someelements').someEvent(function someEventHandler() {
    // code here
});

一旦事件处理程序都有名称,您就可以破解 jquery 开发版本来记录事件和处理程序名称。我在上面的事件调度方法中添加了这个ret = ... .apply()

var handler = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler );
console.log("FIRE EVENT ", event.type, "HANDLER: ", handler.name||'Anonymous Function'); 
于 2014-01-30T17:54:31.453 回答
0

我不确定我是否完全在上下文中。但是如果你发现函数是一个值(例如在一些对象属性中),你总是可以从 Chrome DevTools 的上下文菜单中导航到它的源。

于 2012-10-19T01:57:44.713 回答
-1
jQuery('someelements').someEvent(function(e) {
    // code here
alert(e.target);
});
于 2012-10-19T03:46:11.907 回答