A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

事件冒泡

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>事件冒泡</title>
        <style type="text/css">
                .grandfather{
                        width: 300px;
                        height: 300px;
                        background-color: green;
                        position: relative;
                }
                .father{
                        width: 200px;
                        height: 200px;
                        background-color: gold;
                }
                .son{
                        width: 100px;
                        height: 100px;
                        background-color: red;
                        position: absolute;
                        left: 0;
                        top: 400px;
                }
        </style>
        <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
                $(function(){
                        $('body').click(function() {
                                alert(4);
                        });
                        $('.grandfather').click(function() {
                                alert(3);
                        });
                        $('.father').click(function() {
                                alert(2);
                        });
                        $('.son').click(function(event) {//event代表当前事件
                                alert(1);
                                // console.log(event);//显示很多属性,其中clientX、clientY就是点击的坐标
                                // alert("X轴坐标:" + event.clientX);

                                // //阻止事件冒泡
                                // event.stopPropagation();

                                //合并阻止操作:把阻止冒泡和阻止默认行为合并
                                return false;
                        });

                        //阻止右键菜单
                        $(document).contextmenu(function(event){
                                // //阻止默认行为(原来右键能弹出菜单,阻止后无法弹出)
                                // event.preventDefault();

                                //合并阻止
                                return false;
                        })
                })
        </script>
</head>
<body>
        <div class="grandfather">
                <div class="father">
                        <div class="son"></div>
                </div>
        </div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
定时器弹框

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>定时器弹框</title>
        <style type="text/css">
                .pop_con{
                        display: none;/*默认不显示,用定时器显示*/
                }
                .pop{
                        width: 400px;
                        height: 300px;
                        background-color: #fff;
                        border: 1px solid #000;
                        position: fixed;/*使用固定定位*/
                        left: 50%;/*左上角位于页面中心*/
                        top: 50%;
                        margin-left: -200px;/*让div向左偏移半个宽度、向上偏移半个高度,使div位于页面中心*/
                        margin-top: -150px;
                        z-index: 9999;/*弹窗在最前面*/
                }
                /*遮罩样式*/
                .mask{
                        position: fixed;
                        width: 100%;
                        height: 100%;
                        background-color: #000;
                        left: 0;
                        top: 0;
                        /*设置透明度30%,兼容IE6、7、8*/
                        opacity: 0.3;
                        filter: alpha(opacity=30);
                        z-index: 9990;/*遮罩在弹窗后面*/
                }
        </style>
        <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
                $(function(){
                        $('#btn').click(function() {
                                $('#pop').show();
                                return false;
                        });
                        $('#shutoff').click(function() {
                                $('#pop').hide();
                        });
                        //点弹框以外的地方,也能让弹框消失
                        $(document).click(function(){
                                // setTimeout(function(){
                                //         $('#pop').hide();
                                // },2000);

                                $('#pop').hide();
                        });
                        $('.pop').click(function() {
                                return false;
                        });
                       
                        //阻止默认行为(原来超链接可跳转到百度,阻止后无法跳转)
                        $('#link1').click(function() {
                                return false;
                        });
                })
        </script>
</head>
<body>
        <h1>首页标题</h1>
        <p>页面内容</p>
        <a href="http://www.baidu.com" id="link1">百度网</a>
        <input type="button" name="" value="弹出" id="btn">

        <div class="pop_con" id="pop">
                <div class="pop">
                        <h3>提示信息!</h3>
                        <a href="#" id="shutoff">关闭</a>
                        <input type="text" name="">
                </div>
                <!-- 遮罩层 -->
                <div class="mask"></div>
        </div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
事件委托

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>事件委托</title>
        <style type="text/css">
                .list{
                        list-style: none;
                }

                .list li{
                        height: 30px;
                        background-color: green;
                        margin-bottom: 10px;
                        color: #fff;
                }
        </style>
        <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
                $(function(){
                        /*
                        给每个li绑定事件,一共绑定了8次,性能不高
                        $('.list li').click(function() {
                                alert($(this).html());
                        });
                        */

                        /*
                        事件委托:方法delegate,只绑定一次事件,冒泡触发
                                参数:
                                        selector选择器:写入ul下面的所有要发生事件的元素,多个元素用空格隔开,例如‘li a span’
                                        eventType事件
                                        function要执行的操作
                       
                        $('.list').delegate('li', 'click', function() {
                                //$(this)指发生事件的子集,即每个li
                                alert($(this).html());

                                //全部取消委托
                                $('.list').undelegate();
                        });
                })
        </script>
</head>
<body>
        <ul class="list">
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
                <li>6</li>
                <li>7</li>
                <li>8</li>
        </ul>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
节点操作

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>节点操作</title>
        <style type="text/css">
               
        </style>
        <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
        <script type="text/javascript">
                $(function(){
                        var $span = $('<span>span元素</span>');
                        var $p = $('<p>p段落元素</p>');
                        var $h = $('<h1>页面标题</h1>');

                        /*插入子元素*/
                        //div中插入span和p(末尾追加)
                        // $('#div1').append($span);
                        // $('#div1').append($p);

                        // 把span和p插入div中
                        $span.appendTo('#div1');
                        $p.appendTo('#div1');

                        //把子元素插入到父元素(前面追加)
                        // $('#div1').prepend($span);
                        // $('#div1').prepend($p);
                        // $span.prependTo('#div1');
                        // $p.prependTo('#div1');

                        //在div前边插入兄弟h1标题
                        // $('#div1').before($h);
                        $h.insertBefore('#div1');

                        //在后边插入兄弟元素
                        //after()
                        //insertAfter()

                        //删除p标签
                        $p.remove();       
                })
        </script>
</head>
<body>
        <div id="div1"></div>
</body>
</html>
---------------------
【转载,仅作分享,侵删】
作者:YRyr.*
原文:https://blog.csdn.net/weixin_43152725/article/details/86483324


1 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马