事件捕获jQuery

Too*_*ick 17 javascript jquery

我需要捕捉一个事件,而不是让它冒泡.这就是我要的:

<body>
   <div>
   </div>
</body>
Run Code Online (Sandbox Code Playgroud)

从这个示例代码中,我在div和body上有一个click事件.我希望首先调用body事件.我该怎么做?

pvn*_*ula 39

使用事件捕获代替: -

$("body").get(0).addEventListener("click", function(){}, true);
Run Code Online (Sandbox Code Playgroud)

检查"addEventListener"的最后一个参数,默认情况下为false,处于事件冒泡模式.如果设置为true将作为捕获事件.

用于跨浏览器实现.

var bodyEle = $("body").get(0);
if(bodyEle.addEventListener){
   bodyEle.addEventListener("click", function(){}, true);
}else if(bodyEle.attachEvent){
   document.attachEvent("onclick", function(){
       var event = window.event;
   });
}
Run Code Online (Sandbox Code Playgroud)

IE8和之前的默认情况下使用事件冒泡.所以我将事件附加到文档而不是正文,因此您需要使用事件对象来获取目标对象.对于IE,你需要非常棘手.