为了账号安全,请及时绑定邮箱和手机立即绑定

为什么span的点击失效

<!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点击失效了    

正在回答

4 回答

我按你说的试了一下,不是点击没反应了,是被覆盖了,我是在里面加了两句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(); //阻止事件冒泡  
    });

1 回复 有任何疑惑可以回复我~
#1

啊啊啊啊123 提问者

好的 谢谢 欢迎互相学习
2016-09-13 回复 有任何疑惑可以回复我~

大神,能解答一下:浏览器的默认行为有哪些?有哪些事件可以触发浏览器的默认行为?

0 回复 有任何疑惑可以回复我~

<!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标签的事件不起作用了?这是没有问题的!

0 回复 有任何疑惑可以回复我~
#1

啊啊啊啊123 提问者

//为 Id 为 content 的 <div> 元素绑定 click 事件 改成这样$("#content").click(function(event) { // $("#msg").html("<p>外层div元素被单击</p>"); event.stopPropagation(); //阻止事件冒泡 }); 唉 沟通难啊
2016-09-09 回复 有任何疑惑可以回复我~

 event.stopPropagation()阻止了事件的发生

0 回复 有任何疑惑可以回复我~
#1

Feair

别人是问为何$("#msg").html($("#msg").html() + "<p>外层div元素被单击</p>");该成$("#msg").html("<p>外层div元素被单击</p>");span点击会失效了。问题都看错了。
2016-09-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么span的点击失效

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信