<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> .left div, .right div { width: 500px; height: 100px; padding: 5px; margin: 5px; float: left; border: 1px solid #ccc; } .left div { background: #bbffaa; } .right div { background: yellow; } </style> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> <h3>事件对象的属性与方法</h3> <div class="left"> <div id="content"> 外层div元素 <br /> <span style="background: silver;">内层span元素</span> <br /> 外层div元素 </div> <br /> <div id="msg"></div> </div> <script type="text/javascript"> //为 <span> 元素绑定 click 事件 $("span").click(function() { $("#msg").html($("#msg").html() + "<p>内层span元素被单击</p>"); }); //为 Id 为 content 的 <div> 元素绑定 click 事件 $("#content").click(function(event) { $("#msg").html("<p>外层div元素被单击</p>"); event.stopPropagation(); //阻止事件冒泡 }); //为 <body> 元素绑定 click 事件 $("body").click(function() { $("#msg").html($("#msg").html() + "<p>body元素被单击</p>"); }); </script> </body> </html>
为什么删掉#content里的 $("#msg").html() 后span点击失效了
我按你说的试了一下,不是点击没反应了,是被覆盖了,我是在里面加了两句alert()的调试语句一下原因就出来了。
点击span后,绑在span上的事件触发,出现两行话,因为冒泡,绑在content上的事件也触发,又把那两句话覆盖,这两个动作很快,就像那句话都没变一样,你看不懂的话,自己试下,我也是刚学,互帮互助更快成长哦。。。
$("span").click(function() {
alert('111');
$("#msg").html($("#msg").html() + "<p>内层span元素被单击</p>");
});
$("#content").click(function(event) {
alert('222');
$("#msg").html("<p>外层div元素被单击</p>");
event.stopPropagation(); //阻止事件冒泡
});
大神,能解答一下:浏览器的默认行为有哪些?有哪些事件可以触发浏览器的默认行为?
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<style>
.left div,
.right div {
width: 500px;
height: 100px;
padding: 5px;
margin: 5px;
float: left;
border: 1px solid #ccc;
}
.left div {
background: #bbffaa;
}
.right div {
background: yellow;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<h3>事件对象的属性与方法</h3>
<div class="left">
<div id="content">
外层div元素
<br />
<span style="background: silver;">内层span元素</span>
<br /> 外层div元素
</div>
<br />
<div id="msg"></div>
</div>
<script type="text/javascript">
//为 <span> 元素绑定 click 事件
$("span").click(function() {
$("#msg").html($("#msg").html() + "<p>内层span元素被单击</p>");
});
//为 Id 为 content 的 <div> 元素绑定 click 事件
$("#content").click(function(event) {
// $("#msg").html($("#msg").html() + "<p>外层div元素被单击</p>");
event.stopPropagation(); //阻止事件冒泡
});
//为 <body> 元素绑定 click 事件
$("body").click(function() {
$("#msg").html($("#msg").html() + "<p>body元素被单击</p>");
});
</script>
</body>
</html>
你的意思是这样的代码? span标签的事件不起作用了?这是没有问题的!
event.stopPropagation()阻止了事件的发生