zoukankan      html  css  js  c++  java
  • jQuery之事件移除

    有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理。比如bind()方法,可以通过unbind()方法来移除事件的效果。

    比如下面的一个案例:

    <script type="text/javascript">
        $(function(){
           $('#btn').bind("click", function(){
                         $('#test').append("<p>我的绑定函数1</p>");
                  }).bind("click", function(){
                         $('#test').append("<p>我的绑定函数2</p>");
                  }).bind("click", function(){
                           $('#test').append("<p>我的绑定函数3</p>");
                  });
        })
    </script>

    html部分:

    <body>
    <button id="btn">点击我</button>
    <div id="test"></div>
    </body>

    当点击按钮btn时,触发了三个点击事件,这里的append()方法,向div层中传递了三个段落内容。

    append() 方法在被选元素的结尾(仍然在内部)插入指定内容。它与html()方法还是不同的,html()方法是改变整个元素中的内容,而不是向元素结尾插入内容。text()方法与html() 方法类似,但区别在于html()方法中可以写入html的代码,而且可以被正确的解析,而text() 只能当html代码为正常的字符串。

    这里每次点击,都会执行一次事件,想div层末尾添加段落。

    下面的代码是取消事件效果的,可以通过删除事件,使点击效果失效:

    <script type="text/javascript">
        $(function(){
           $('#btn').bind("click", function(){
                         $('#test').append("<p>我的绑定函数1</p>");
                  }).bind("click", function(){
                         $('#test').append("<p>我的绑定函数2</p>");
                  }).bind("click", function(){
                           $('#test').append("<p>我的绑定函数3</p>");
                  });
           $('#delAll').click(function(){
                  $('#btn').unbind("click");
           });
        })
    </script>

    $('#btn').unbind("click");这句代码的作用就是取消元素btn下的click事件。它不仅仅对于bind()方法有效,它对于click()方法同样有效。从某种角度上讲,bind("click",function(){})与click(function(){})是等价的。

    还可以针对具体的方法,删除特定的事件。

    下面的代码可以参考:

    <script type="text/javascript">
        $(function(){
           $('#btn').bind("click", myFun1 = function(){
                         $('#test').append("<p>我的绑定函数1</p>");
                  }).bind("click", myFun2 = function(){
                         $('#test').append("<p>我的绑定函数2</p>");
                  }).bind("click", myFun3 = function(){
                           $('#test').append("<p>我的绑定函数3</p>");
                  });
           $('#delTwo').click(function(){
                  $('#btn').unbind("click",myFun2);
           });
        })
    </script>

    unbind()方法的第二个参数是事件对应得执行函数的名字,这样执行完后,只有myFun2这个事件被删除了,其他两个click事件正常执行。

    还有一种跟bind()方法类似的方法one(),区别大概就是one()方法只执行一次。

    为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。

    代码如下:

    <script type="text/javascript">
        $(function(){
           $('#btn').one("click", function(){
                         $('#test').append("<p>我的绑定函数1</p>");
                  }).one("click", function(){
                         $('#test').append("<p>我的绑定函数2</p>");
                  }).one("click", function(){
                           $('#test').append("<p>我的绑定函数3</p>");
                  });
        })
    </script>

    点击后,只执行一次。再次点击不会触发效果。这就是one方法。

  • 相关阅读:
    什么是知行动手实验室?
    SpringBoot Admin2.0 集成 Java 诊断神器 Arthas 实践
    一文读懂容器存储接口 CSI
    AI 事件驱动场景 Serverless 实践
    一不小心,它成为了 GitHub Alibaba Group 下 Star 最多的开源项目
    5G 和云原生时代的技术下半场,视频化是最大最新的确定性
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
    Knative 基于流量的灰度发布和自动弹性实践
    阿里的 RocketMQ 如何让双十一峰值之下 0 故障?
    阿里巴巴开源容器镜像加速技术
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/2681323.html
Copyright © 2011-2022 走看看