现在有1个页面上有2个js,a和b,a给页面上所有有id的元素绑了一个click事件,b单独给一个特定id的元素绑了一个click事件,并且在方法最后有一个return false;,按我的理解,return false;应该是阻止冒泡的,应该是从点击的元素开始层层向上的,但是最后的情况是,包括这个有特定id的元素本身和它的有id的子节点、有id的父节点,统统都不会触发a中绑定的click事件,只要去掉return false;就一切正常,证明确实是return false;产生的效果
return false;为什么会有这样的效果呢
补充一下吧,我是知道return false;有阻止冒泡的效果的,这个不用再回答了,我问的是,为什么阻止冒泡连子节点的也阻止了,难道不是应该从下往上一层一层的来吗?
div>samp>a>img,大概是这样的层级,b这个js在samp标签上绑的事件return false;,a这个js在这4个标签上的事件都不触发,无论子节点还是父节点还是本身
1)添加的事件代理机制是在事件冒泡到最顶层的时候才会被触发
2)return false影响其所在的div的事件的传播,事件只有一个,一旦被阻止传播,那么其父节点的事件监听器就不会被触发,也就是添加的事件委托绑定的处理函数就不会被触发