leo列

导航

return false的妙用

分别讨论return false 在原生javascript   以及   jquery   以及在VQuery中如何写出即阻止默认事件也阻止冒泡的return false;

先看原生JS  以下是代码

window.onload=function()
{
    var aDiv = document.getElementsByTagName("div");
    for(var i=0;i<aDiv.length;i++)
    {
        aDiv[i].onclick=function()
        {
            alert(this.style.backgroundColor);
            return false;
        };
    }
};
</script>
<style>
div{ padding:50px;}
</style>
</head>

<body>
<div style="background-color:green">
  <div style="background-color:red">
    <div style="background-color:black"></div>
  </div>
</div>

结果:

原生JS:                     return false                                                            IE             ff
                                        阻止默认       yes    yes
                                 阻止冒泡       no            no

 


jquery                       return false                                                          IE             ff
                                        阻止默认       yes    yes
                                 阻止冒泡       yes    yes

要使得VQuery的return false也同时具有阻止默认和阻止冒泡要这么写

function myAddEvent(obj, sEv, fn)
{
    if(obj.attachEvent)
    {
        obj.attachEvent('on'+sEv, function (){
                  //ie的attachEvent方法有一个BUG,如果不指定this的话,this指向window
            if(false==fn.call(obj))
            {
                event.cancelBubble=true;                  //阻止冒泡
                return false;                             //阻止默认
            }
        });
    }
    else
    {
        obj.addEventListener(sEv, function(ev){
            if(false==fn.call(obj))
            {
                ev.cancelBubble=true;                     //阻止冒泡
                ev.preventDefault();                      //阻止默认
            }
        }, false);
    }
}

 

posted on 2012-10-19 15:24  leo列  阅读(162)  评论(0编辑  收藏  举报