书:"Pro JavaScript Techniques 精通JavaScript"之阻止事件冒泡的通用函数

function stopBubble(e){

    //如果传入了事件对象,那么就是非IE浏览器

    if (e&&e.stopPropagation)

       //因此它支持W3C的stopProgation()方法

       e.stopProgation();

    else

       //否则,我们得使用IE的方式来取消事件冒泡

       window.event.cancelBubble=true;

}

下面的代码展示了一个简短的片断,它会为鼠标悬停的当前元素加上红色的边框.可以通过每一个DOM元素增加mouseover和mouseout事件来实现.如果不阻止事件冒泡,每次把鼠标移到一个元素上时,该元素及其父元素都会有红色的边框,这并不如你所预期的.

使用stopBubble()来创建元素的交互集

//定位,遍历所有的DOM元素

var all=document.getElementsByTagName("*");

for (var i=0;i<all.length;i++){

      //监听用户鼠标,当移动到元素上时

      //为元素加上红色边框

      all[i].οnmοuseοver=function(e){

           this.style.border="1px solid red";

           stopBubble(e);

       }

       //检查用户鼠标,当移开元素时

      //删除我们加上的边框

      all[i].οnmοuseοut=funtion(e){

           this.style.border="0px";

           stopBubble(e);

      };

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值