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

关于if (e && e.stopPropagation)求教
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
------解决方案--------------------
引用:
Quote: 引用:

1.e只要不是undefined或者null或者0,他就可以当true来处理

2.e.stopPropagation是判断e是否有stopPropagation这个属性,原理同上

结合起来就是:

如果e有值,并且e有stopPropagation这个属性,则调用e.stopPropagation()
否则执行window.event.cancelBubble=true
if (e && e.stopPropagation()) 为什么不是这样


如果是这样的话,如果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的其他值
------解决方案--------------------