e && e.stopPropagation
①这里的e是如何判断真假的,e==0或者是1吗?
②(e && e.stopPropagation)括号里的e.stopPropagation函数为什么没有小括号?
<div onclick="showMsg(this,event)" id="outSide" style="width:100px; height:100px; background:#000; padding:50px">
<div onclick="showMsg(this,event)" id="inSide" style="width:100px; height:100px; background:#CCC"></div>
</div>
<script type="text/javascript">
//阻止事件冒泡后,你点击灰色盒子,整个过程只弹一次对话框了(注意与默认情况对比)
function showMsg(obj,e)
{
alert(obj.id);
stopBubble(e)
}
//阻止事件冒泡函数
function stopBubble(e)
{
if (e && e.stopPropagation)
e.stopPropagation()
else
window.event.cancelBubble=true
}
</script>
------解决方案--------------------
1.e只要不是undefined或者null或者0,他就可以当true来处理
2.e.stopPropagation是判断e是否有stopPropagation这个属性,原理同上
结合起来就是:
如果e有值,并且e有stopPropagation这个属性,则调用e.stopPropagation()
否则执行window.event.cancelBubble=true
------解决方案--------------------
如果是这样的话,如果e.stopPropagation不存在的话会抛出异常,如果存在的话 e.stopPropagation()会执行stopPropagation这个函数
------解决方案--------------------
e.stopPropagation的意思是e中是否有stopPropagation属性,而e.stopPropagation()表示调用e中的stopPropagation()方法,在js中()表示方法调用如果写成if (e && e.stopPropagation()),则表示判断e是否不为null,undefined,0或者其他可以转换为false的值,并且e.stopPropagation()的执行结果是否为false或者可以转换为false的其他值
------解决方案--------------------