为什么span的点击失效

来源:6-2 jQuery事件对象的属性和方法

啊啊啊啊123

2016-09-09 09:27

<!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回答

  • qq_郭祥勤_03578575
    2016-09-12 22:34:15
    已采纳

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

    啊啊啊啊12...

    好的 谢谢 欢迎互相学习

    2016-09-13 09:29:03

    共 1 条回复 >

  • 猎风的雄鹰
    2016-11-13 16:17:17

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

  • angelos_one
    2016-09-09 15:01:52

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

    啊啊啊啊12...

    //为 Id 为 content 的 <div> 元素绑定 click 事件 改成这样$("#content").click(function(event) { // $("#msg").html("<p>外层div元素被单击</p>"); event.stopPropagation(); //阻止事件冒泡 }); 唉 沟通难啊

    2016-09-09 19:06:00

    共 1 条回复 >

  • 青菜小萝卜
    2016-09-09 15:00:08

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

    Feair

    别人是问为何$("#msg").html($("#msg").html() + "<p>外层div元素被单击</p>");该成$("#msg").html("<p>外层div元素被单击</p>");span点击会失效了。问题都看错了。

    2016-09-11 19:17:14

    共 1 条回复 >

jQuery基础(三)—事件篇

jQuery第三阶段开启事件修炼,掌握对页面进行交互的操作

89997 学习 · 625 问题

查看课程

相似问题