jquery:event.stopImmediatePropagation()vs返回false
调用event.stopImmediatePropagation()并在事件处理程序中return false是否有区别? 
是的,他们是不同的。
  return false与调用event.stopPropagation()和event.preventDefault()两者基本相同。 
 而event.stopImmediatePropagation()与event.stopPropagation()相同,同时阻止执行相同元素上的其他注册事件处理程序。 因此,它不会阻止某个事件的默认操作,例如点击链接。 
简而言之:
  stop | prevent | prevent "same element" bubbling | default action | event handlers return false Yes Yes No preventDefault No Yes No stopPropagation Yes No No stopImmediatePropagation Yes No Yes 
  return false也适用于“正常的”JavaScript事件处理程序 
  event.stopPropagation()和event.preventDefault()也可以在“普通的”JavaScript事件处理程序中工作(在W3C兼容的浏览器中),而event.stopImmediatePropagation()是jQuery的扩展( update:显然它是DOM级别的一部分3活动规范 )。 
  注意: return false 不会阻止事件在“普通” (非jQuery)事件处理程序中冒泡(请参阅此答案 )(但仍阻止默认操作)。 
也许值得一读:
- jQuery事件:停止(错误)使用返回False
- quirksmode.org – 事件顺序
 返回false将停止事件冒泡,但其他绑定事件将触发。 但是, stopImmediatePropagation阻止其他绑定事件触发并停止冒泡。 
代码在jsfiddle上的例子 。
 这里是完整的演示return false , preventDefault , stopPropagation和stopImmediatePropagation : 
 var kid = document.getElementsByTagName('button')[0]; var dad = document.getElementsByTagName('div')[0]; kid.addEventListener('click', function(e) { console.log('kid here'); e.stopImmediatePropagation(); }); kid.addEventListener('click', function(e) { console.log('neighbour kid here'); }); dad.addEventListener('click', function(e) { console.log('dad here'); }); dad.addEventListener('click', function(e) { console.log('neighbour dad here'); }); 
 <div> <button>press</button> </div> 
是。 event.stopImmediatePropagation()不会让任何其他处理程序被调用,不pipe它们绑定在哪里。 返回false只会停止绑定到其他元素的处理程序(即与处理stopImmediatePropagation()调用的事件处理程序不同的元素)来接收事件。
@FelixKling答案桌子有很棒的概念:
我张贴更多解释表:
  stop | prevent | prevent | bubbling | default action | event handlers | Same Element | Parent Element return false Yes Yes No No preventDefault No Yes No No stopPropagation Yes No No Yes stopImmediatePropagation Yes No Yes No 
参考: https : //stackoverflow.com/a/5302939/2236219