冒泡
如果在页面中重叠了多个元素,并且重叠的这些元素都绑定了同一个事件,那么就会出现冒泡问题。例如:
<body>
<div style="width:300px;height:300px;background-color:skyblue;">
<input type="button" value="button"/>
</div>
</body>
- 1
- 2
- 3
- 4
- 5
如果document、div、input三个元素绑定了同一个事件,就会产生冒泡:
$(document).click(function(){
alert("document");
});
$("div").click(function(){
alert("div");
});
$(":button").click(function(){
alert("button");
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
当点击button时,会先弹出button、然后是div、然后是document
解决方法:
方式一:event.stopPropagation();
1 $("#div1").mousedown(function(event){ 2 event.stopPropagation(); 3 });
方式二:return false;
1 $("#div1").mousedown(function(event){ 2 return false; 3 });
但是这两种方式是有区别的。return false 不仅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。