2009-07-23 68 views
1

可能重复:
How to debug Javascript/jQuery event bindings with FireBug (or similar tool)
How to find event listeners on a DOM node?我如何识别哪些事件通过JavaScript绑定?

如何检测哪些事件已经通过JavaScript绑定到DOM元素?在下面的例子中,我希望能够看到点击事件已经绑定在我的'可点击的'范围上,并且如果可能的话,能够从alert-line进行调试。

我可以用像Firebug这样的网络开发工具来做到这一点吗?

<html> 
    <head> 
     <title>Events bound with JavaScript</title> 
     <script type="text/javascript" 
      src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $("#clickable").click(function() { 
        alert("Clicked."); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <span id="clickable">Click me</span> 
    </body> 
</html> 
+0

Dup:http://stackoverflow.com/questions/570960/how-to-debug-javascript-jquery-event-bindings-with-firebug-or-similar-tool/ – 2009-07-23 14:47:34

回答

1
// this function will return number of keys in object 
function objectLenght (obj) { 
    var len = 0; 
    for (var key in obj) { 
     len++; 
    } 
    return len; 
} 

var objWithClickEvents = []; 

// iterate through all elements 
$('*').each(function() { 
    var clickEvents = $.data($(this)[0], 'events').click; 
    if (objectLength(clickEvents) > 0) { 
     objWithClickEvents[objWithClickEvents.length] = $(this); 
    } 
}); 

更换click与其他事件,如果你想。