大多数jQuery代码使用匿名函数,例如:
jQuery('someelements').someEvent(function() {
// code here
});
这很好用,但调试效果不佳。我尝试使用Firefox Firebug和Chrome的检查器找到一些匿名函数的来源,具有暂停javascript功能,但它调用的实际代码是在jQuery js文件中,并且单步执行代码从不告诉什么行,甚至是什么.js文件添加了该事件。如何查看操作的定义?
答案 0 :(得分:1)
有一个Google Chrome / Firefox插件,可以让您查看jQuery或其他(特定)库注册的事件:Visual Event。
类似的问题:Firefox extension to find out which Javascript event is bound to an inspected element?
答案 1 :(得分:1)
尝试使用非缩小版本的jQuery
并使用Firebug中的profile
功能查找jQuery源中与代码中事件发生时调用的确切行。
如果您的目的是找到一些jQuery选择器或函数实现的实现,请参考这个令人惊讶的资源: http://www.keyframesandcode.com/resources/javascript/deconstructed/jquery/
答案 2 :(得分:0)
我不确定我是完全在上下文中。 但是,如果您将该函数视为值(例如在某些对象属性中),则始终可以从Chrome DevTools中的上下文菜单导航到其源。
答案 3 :(得分:0)
我发现有用的一件事是给事件处理程序一个名字,尽管它没有被其他地方调用。这样,在分析工具中识别它就更容易了。
e.g。
jQuery('someelements').someEvent(function someEventHandler() {
// code here
});
一旦事件处理程序都有名称,您就可以破解jquery dev版本来记录事件和处理程序名称。我在ret = ... .apply()
var handler = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler );
console.log("FIRE EVENT ", event.type, "HANDLER: ", handler.name||'Anonymous Function');
答案 4 :(得分:-1)
jQuery('someelements').someEvent(function(e) {
// code here
alert(e.target);
});