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); } }