jQuery事件监听

时间:2011-05-13 20:50:49

标签: javascript jquery

基本上我希望能够从FireBug调用jQuery,在页面上放置侦听所有事件触发器的代码,然后在不知道页面结构或事件类型的情况下显示有关事件触发的信息。< / p>

var s = document.createElement('script');
s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
document.body.appendChild(s);
s.onload=function(){
  // Bind a listening event without overwriting the original events
  /* jQuery("*").[something](function(){
    console.log ( jQuery(this) );
  });*/
}

可能的解决方案:
*我正在考虑遍历每个元素并创建一个事件,该事件将元素的原始事件保存为对象,但是我希望有更简单的方法。
*如果存在一个侦听从对象触发的事件而不覆盖当前事件绑定的方法,那么这将是更可取的。

1 个答案:

答案 0 :(得分:0)

你可以用这个:

var arrEvent = ['blur','focus','focusin','focusout','load','resize','scroll','unload','click','dblclick','mousedown','mouseup','mousemove','mouseover','mouseout','mouseenter','mouseleave','change','select','submit','keydown','keypress','keyup','error'];

$(document).bind(arrEvent.join(' '), function(e){
    // play with e
});

因为所有事件都使用冒泡阶段,文档会捕获它们, http://www.quirksmode.org/js/events_order.html

编辑: 正如jimbojw提到的那样,调用event.stopPropagation的事件不会被捕获! http://api.jquery.com/event.stopPropagation/