前端

jQuery事件注册、解绑、触发

2022-03-17  本文已影响0人  马佳乐

注册事件

jQuery1.7之后,jQuery用on统一了所有事件的注册方式。

on简单注册事件

不支持动态注册
语法:
$(元素).on(事件名,function);
例如:

        $("div").on("click",function(){
            console.log("点击事件触发");
        });

on委托注册

支持动态注册
语法:
$(父元素).on(事件名,子元素,function);

        $("body").on("click","div,span",function(){
            console.log("动态点击事件触发");
        });

动态添加、删除表格数据可用on动态注册事件处理:


<!DOCTYPE html>

<html>

    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            
            .wrap {
                width: 410px;
                margin: 100px auto 0;
            }
            
            table {
                border-collapse: collapse;
                border-spacing: 0;
                border: 1px solid #c0c0c0;
            }
            
            th,
            td {
                border: 1px solid #d0d0d0;
                color: #404060;
                padding: 10px;
            }
            
            th {
                background-color: #09c;
                font-weight: bold;
                font-size: 16px;
                color: #fff;
            }
            
            td {
                font-size: 14px;
            }
            
            td a.get {
                text-decoration: none;
            }
            
            a.del:hover {
                text-decoration: underline;
            }
            
            tbody tr {
                background-color: #f0f0f0;
            }
            
            tbody tr:hover {
                cursor: pointer;
                background-color: #fafafa;
            }
            
            #j_btnAddDate {
                width: 110px;
                height: 30px;
                font-size: 20px;
                font-weight: bold;
                margin-bottom: 10px;
            }
            
            .form-item {
                height: 100%;
                position: relative;
                padding-left: 100px;
                padding-right: 20px;
                margin-bottom: 34px;
                line-height: 36px;
            }
            
            .form-item>.lb {
                position: absolute;
                left: 0;
                top: 0;
                display: block;
                width: 100px;
                text-align: right;
            }
            
            .form-item>.txt {
                width: 300px;
                height: 32px;
            }
            
            .mask {
                position: absolute;
                top: 0px;
                left: 0px;
                width: 100%;
                height: 100%;
                background: #000;
                opacity: 0.15;
                display: none;
            }
            
            .form-add {
                position: fixed;
                top: 30%;
                left: 50%;
                margin-left: -197px;
                padding-bottom: 20px;
                background: #fff;
                display: none;
            }
            
            .form-add-title {
                background-color: #f7f7f7;
                border-width: 1px 1px 0 1px;
                border-bottom: 0;
                margin-bottom: 15px;
                position: relative;
            }
            
            .form-add-title span {
                width: auto;
                height: 18px;
                font-size: 16px;
                font-weight: bold;
                color: rgb(102, 102, 102);
                text-indent: 12px;
                padding: 8px 0px 10px;
                margin-right: 10px;
                display: block;
                overflow: hidden;
                text-align: left;
            }
            
            .form-add-title div {
                width: 16px;
                height: 20px;
                position: absolute;
                right: 10px;
                top: 6px;
                font-size: 30px;
                line-height: 16px;
                cursor: pointer;
            }
            
            .form-submit {
                text-align: center;
            }
            
            .form-submit input {
                width: 170px;
                height: 32px;
            }
            
            </sty
        </style>

    </head>

    <body>
        <div class="wrap">
            <input type="button" value="添加数据" id="j_btnAddDate">
            <table>
                <thead>
                    <tr>
                        <th>课程名称</th>
                        <th>所属学院</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody id="j_tb">
                    <tr>
                        <td>JavaScript</td>
                        <td>前端与移动开发学院</td>
                        <td>
                            <a href="#" class="get">DELETE</a>
                        </td>
                    </tr>
                    <tr>
                        <td>css</td>
                        <td>前端与移动开发学院</td>
                        <td>
                            <a href="#" class="get">DELETE</a>
                        </td>
                    </tr>
                    <tr>
                        <td>html</td>
                        <td>前端与移动开发学院</td>
                        <td>
                            <a href="#" class="get">DELETE</a>
                        </td>
                    </tr>
                    <tr>
                        <td>jQuery</td>
                        <td>前端与移动开发学院</td>
                        <td>
                            <a href="#" class="get">DELETE</a>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
        <!--遮罩层-->
        <div id="j_mask" class="mask"></div>
        <!--添加数据的表单-->
        <div id="j_formAdd" class="form-add">
            <div class="form-add-title">
                <span>添加数据</span>
                <div id="j_hideFormAdd">×</div>
            </div>
            <div class="form-item">
                <label class="lb" for="j_txtLesson">课程名称:</label>
                <input class="txt" type="text" id="j_txtLesson" placeholder="请输入课程名称" />
            </div>
            <div class="form-item">
                <label class="lb" for="j_txtBelSch">所属学院:</label>
                <input class="txt" type="text" id="j_txtBelSch" value="前端与移动开发学院" />
            </div>
            <div class="form-submit">
                <input type="button" value="添加" id="j_btnAdd" />
            </div>
        </div>

    </body>

</html>
<script src="js/jquery.js"></script>
<script>
    $(function() {
        //1:点击添加数据按钮,显示添加面板和遮罩层
        $("#j_btnAddDate").click(function() {
            $("#j_formAdd").show();
            $("#j_mask").show();
        });
        //2:点击添加面板里的关闭按钮,隐藏添加面板和遮罩层
        $("#j_hideFormAdd").click(function() {
            $("#j_formAdd").hide();
            $("#j_mask").hide();
        });
        //3:点击添加面板里的添加按钮,会把输入的内容生成一个tr,这个tr添加到tbody中
        $("#j_btnAdd").click(function() {
            //获取到用户输入的所属学院和课程名称
            var $txtLesson = $("#j_txtLesson").val(); //获取用户输入的课程名称
            var $txtBelSch = $("#j_txtBelSch").val(); //获取用户输入的所属学院
            //把用户输入的课程名称和所属学院,创建出一个tr
            var $trNew = $('<tr>' +
                '<td>' + $txtLesson + '</td>' +
                '<td>' + $txtBelSch + '</td>' +
                '<td><a href="#" class="get">DELETE</a></td>' +
                '</tr>'
            );
//          //给新建的$trNew里的a标签添加一个事件
//          $trNew.find(".get").click(function() {
//              $trNew.remove();
//          });
            //把创建的tr标签添加到tbody中
            $("#j_tb").append($trNew);
            //关闭面板和遮罩
            $("#j_hideFormAdd").click();

        });
//      //4:点击delete这些a标签,删除对应的tr
//      $("#j_tb .get").click(function() {
//          $(this).parent().parent().remove();
//      });
        
        $("#j_tb").on("click",".get",function(){
            //this为子元素,而不是父元素
            $(this).parent().parent().remove();
        });

    });
</script>

多事件绑定

例如;

        $("div").on({
            "click":function(){
                console.log("单击事件");
            },
            "mouseenter":function(){
                console.log("鼠标移入事件");
            }
        });

解绑事件

$(元素).off([事件名]);
不给参数,解绑所有事件
给参数,解绑指定事件

触发事件

$(元素).trigger(事件名);
用代码的方式来触发事件
可以使用他来触发自定义事件

上一篇下一篇

猜你喜欢

热点阅读