书:"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].onmouseover=function(e){

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

           stopBubble(e);

       }

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

      //删除我们加上的边框

      all[i].onmouseout=funtion(e){

           this.style.border="0px";

           stopBubble(e);

      };

}

你可能感兴趣的:(JavaScript,c,function,浏览器,IE)