jQuery——为元素解绑事件不同方法

本文深入讲解了使用bind、delegate及off方法在不同场景下解绑事件的技巧,包括如何精确解绑特定事件或元素的事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:bind解绑事件
用什么方式绑定事件,最好用对应的方式解绑事件
bind括号中写什么事件的名字就会把这个事件解绑,会把这个元素的这个点击的多个事件都会解绑

    <style>
        div{
            width:100px;
            height:30px;
            background-color: red;
            cursor:pointer;
        }
    </style>
    <script src="jquery-1.12.1.js"></script>
    <script>
        $(function(){
            //第一个按钮为div绑定事件
            $("#btn").click(function(){
                $("#dv").bind("click",function(){
                    console.log("div被点了");
                }).bind("click",function(){
                    console.log("div被点击第二次");
                });
                //鼠标进入
                $("#dv").bind("mouseenter",function(){
                    $(this).css("backgroundColor","blue");
                });
                //鼠标离开
                $("#dv").bind("mouseleave",function(){
                    $(this).css("backgroundColor","yellow");
                });
            });
            //第二个按钮为div解绑事件
            $("#btn2").click(function(){
                //解绑的是点击事件,所有点击事件全部移除
                $("#dv").unbind("click");
                //括号中没有任何参数,此时该元素的所有事件全部解绑
                //$("#dv").unbind();
                //同时解绑多个事件
                //$("#dv").unbind("mouseenter mouseleave");
            });
        });
    </script>
......
<input type="button" value="绑定事件" id="btn"/>
<input type="button" value="解绑事件" id="btn2"/>
<div id="dv"></div>

例:delegate解绑事件

    <script>
        //delegate绑定事件对应的解绑方式
        //点击第一个按钮,div有自己的点击事件,有鼠标进入和鼠标离开事件
        //同时为p绑定点击事件
        $(function(){
            $("#btn").click(function () {
                $("#dv").click(function () {
                    console.log("div被点了");
                }).mouseenter(function(){
                    console.log("鼠标进入");
                }).mouseleave(function(){
                    console.log("鼠标离开");
                });
                //在div中创建一个p,同时绑定点击事件
                $("<p>这是一个p</p>").appendTo($("#dv"));
                //为p绑定事件
                $("#dv").delegate("p","click",function(){
                    console.log("被点了");
                });
            });
            //第二个按钮解绑事件
            $("#btn2").click(function(){
                //p的点击事件没有了,移除了p的所有事件
                //$("#dv").undelegate();
                //移除的是p的点击事件
                $("#dv").undelegate("p","click");
                //可以移除多个事件,但是每个事件之间用空格隔开
                $("#dv").undelegate("p","click mouseenter");
            });
        });
    </script>

例:off解绑的不同代码方法

                $("#btn2").click(function(){
                    //父级元素和子级元素所有事件全部解绑
                    //$("#dv").off();
                    //把父级元素和子级元素的点击事件解绑
                    //$("#dv").off("click");
                    //父级元素和子级元素的多个事件,中间用空格
                    //$("#dv").off("click mouseenter");
                    //解绑p标签的点击事件
                    //$("#dv").off("click","p");
                    //p的两个事件都没了
                    //$("#dv").off("click mouseenter","p");
                    //p的所有事件全部解绑
                    //$("#dv").off("click","");
                });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值