您的位置:首页 > Web前端 > JQuery

jQuery时间冒泡

2015-09-16 17:09 731 查看
事件冒泡:当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。就是当设定了多个div的嵌套时;即建立了父子关系,当父div与子div共同加入了onclick事件时,当触发了子div的onclick事件后,子div进行相应的js操作。但是父div的onclick事件同样会被触发。这就造成了事件的多层并发,导致了页面混乱。这就是冒泡事件。

阻止JavaScript事件冒泡传递的方法:

1.event.stopPropagation();

 $(document).ready(function(){
$('div').click(function(event){
alert('div');
});
$('p').click(function(event){
alert('p');
});
$('span').click(function(event){
alert('span');
event.stopPropagation();
})
});

<div>DivElement
  <p>ParagraphElement<br/>
    <span>SpanElement</span>
  </p>
</div>



2.return(false);

$(document).ready(function(){
$('div').click(function(event){
alert('div');
});
$('p').click(function(event){
alert('p');
});
$('span').click(function(event){
alert('span');
return(false);
})
});

<div>DivElement
<p>ParagraphElement<br/>
<span>SpanElement</span>
</p>
</div>


区别:returnfalse不仅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation()则只阻止事件往上冒泡,不阻止事件本身。

程序员可以自己选择绑定事件时采用事件捕获还是事件冒泡,方法就是绑定事件时通过addEventListener函数,它有三个参数,第三个参数若是true,则表示采用事件捕获,若是false,则表示采用事件冒泡。

ele.addEventListener('click',doSomething2,true)

true=捕获

false=冒泡
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: