stopPropagation()阻止事件冒泡
定义和用法
stopPropagation(e);不再派发事件。
终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。
说明
该方法将停止事件的传播,阻止它被分派到其他 Document 节点。在事件传播的任何阶段都可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。
demo:
/* 一个链接下拉框ul list 用点击span来切换展示和隐藏 */
$(".linkbox ul").hide();//默认隐藏
$('.linkbar span').bind('click',function(e){
$(".linkbox ul").toggle();//点击切换状态
stopPropagation(e); /* 防止事件冒泡 阻止把span上的事件再分配到其他节点如document*/
});
$(document).bind('click',function(){
$('.linkbox ul').hide(); //点击其他地方隐藏
});
function stopPropagation(e) {
if (e.stopPropagation)
e.stopPropagation();
else
e.cancelBubble = true;
}
如果span没有写阻止冒泡的话,把下面这段stopPropagation(e);注释掉,那么无论怎么点击ul list 都是隐藏的。因为span 的click事件会冒泡到document,先后调用span和docment的click事件。
$('.linkbar span').bind('click',function(e){
$(".linkbox ul").toggle();//点击切换状态
// stopPropagation(e); /* 防止事件冒泡 阻止把span上的事件再分配到其他节点如document*/
});