日期:2014-05-16  浏览次数:20359 次

js_jq_冒泡_浏览器默认行为
   /**     
     * E(e).stop(); 阻止时间冒泡
     * E(e).prevent();阻止时间默认行为
     * [转自:http://www.cnblogs.com/idche/archive/2010/11/13/1876604.html]
     */
    var E = function(e){
e = window.event || e;
return {
            stop: function() {
                if (e && e.stopPropagation) e.stopPropagation();
                else e.cancelBubble = true
            },
            prevent: function() {
                if (e && e.preventDefault) e.preventDefault();
                else e.returnValue = false
            }
}
}

---------------------
JQuery的解决方案:
1.return false :In event handler ,prevents default behavior and event bubbing 。
return false  在事件的处理中,可以阻止默认事件和冒泡事件。
(如上面所说可以阻止默认事件和冒泡事件。)

2.event.preventDefault():In event handler ,prevent default event (allows bubbling) 。
event.preventDefault()在事件的处理中,可以阻止默认事件但是允许冒泡事件的发生。

3.event.stopPropagation():In event handler ,prevent bubbling (allows default behavior).
event.stopPropagation()在事件的处理中,可以阻止冒泡但是允许默认事件的发生

纯js的解决方案如下:
1)停止冒泡的写法
//如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.stopPropagation )
// 因此它支持W3C的stopPropagation()方法
e.stopPropagation();
else{
//否则,我们需要使用IE的方式来取消事件冒泡
window.event.cancelBubble = true;return false;
}2)阻止浏览器的默认行为
//如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.preventDefault )
//阻止默认浏览器动作(W3C)
e.preventDefault();
else{
//IE中阻止函数器默认动作的方式
window.event.returnValue = false;return false;
}