zoukankan      html  css  js  c++  java
  • 解决使用jQuery采用append添加的元素事件无效的方法

    当我们使用jQuery动态加载html元素,但是元素上面又绑定了Click等事件,针对新添加的元素这些事件是无效的,那么应该怎样解决呢?
    jQuery 动态加载html绑定事件

    live方法

    live( type, fn )
    jQuery 1.3中新增的方法。给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件)。也能绑定自定义事件。
    目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup。
    还不支持 blur, focus, mouseenter, mouseleave, change, submit
    与bind()不同的是,live()一次只能绑定一个事件。

    这个方法跟传统的bind很像,区别在于用live来绑定事件会给所有当前以及将来在页面上的元素绑定事件(使用委派的方式)。比如说,如果你给页 面上所有的li用live绑定了click事件。那么当在以后增加一个li到这个页面时,对于这个新增加的li,其click事件依然可用。而无需重新给 这种新增加的元素绑定事件。比如下面的代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    <html>
    <head>
    <script type="text/javascript" src="/jquery/jquery.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
      $("button").live("click",function(){
        $("p").slideToggle();
      });
    });
    </script>
    </head>
    <body>
    <p>这是一个段落。</p>
    <button>请点击这里</button>
    </body>
    </html>

    on 方法

    但是随着jQuery的版本升级,自从jQuery 1.9及其以上已经无法使用live了,那么没有办法了吗,不是的,对于jQuery1.9版本及其以上可以使用on,其效果等同于live。下面的on的使用方法

    1
    2
    3
    4
    5
    6
    7
    
    <script>
    $(document).on("click", ".waiting-save", function () {
     $(this).html('@T("Saving...")')
         $(this).attr("disabled", "");
         SaveAction(this);
       });
    </script>
  • 相关阅读:
    基于tensorflow的简单线性回归模型
    msm8909平台JEITA配置和bat-V therm表合入
    开始点滴积累
    消息队列中间件(一)介绍
    Ubuntu18 的超详细常用软件安装
    IO通信模型(三)多路复用IO
    IO通信模型(二)同步非阻塞模式NIO(NonBlocking IO)
    IO通信模型(一)同步阻塞模式BIO(Blocking IO)
    Web笔记(二)Tomcat 使用总结
    const in C/C++
  • 原文地址:https://www.cnblogs.com/Joburgess/p/4213070.html
Copyright © 2011-2022 走看看