zoukankan      html  css  js  c++  java
  • 动态生成的html添加事件

    一、问题描述

      用jQuery的append()方法动态添加了一段html代码之后,发现在为新添加的元素绑定click事件时无法获取该新元素。

    二、解决方法

      度娘推荐的方法基本是用live()方法

      live()的官方定义和用法:

      live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。

      live()的详细使用方法可以查看jQuery live()

      live()和bind()的区别就是live不仅可以给页面中现有的元素绑定事件,还可以给将来动态添加进来的元素绑定时间。

      于是我用live()替换了bind(),但报出了新错误:TypeError: $(...).live is not a function

      经过查询以后发现,原来是jQuery 1.9及其以上已经无法使用live(),可以用on()方法代替live().

      on()的官方定义和用法:

      on() 方法在被选元素及子元素上添加一个或多个事件处理程序。自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。

      注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。

       on()的详细使用方法可以查看jQuery on();

      总之,记住如果你要绑定动态生成的元素事件,一定要先找到他的父元素(父元素不能是动态生成的,否则继续往上找),在父元素中绑定,然后再进行过滤就ok了,对了,我测试了hover事件发现不行,没去深究原因。

  • 相关阅读:
    zookeeper curator ( 实战一)
    【转】HDMI之TMDS信号
    【转】LVDS基础、原理、图文讲解
    【原】HDMI输出接口传输速率计算
    【转】 HDMI介绍与流程
    【转】 glibc detected *** corrupted double-linked list:错误的原因有如下三种可能
    【转】 ISP-镜头阴影校正(LSC)
    【转】 ISP-黑电平校正(BLC)
    【转】 ISP概述、工作原理及架构
    【转】 VGA时序及其原理
  • 原文地址:https://www.cnblogs.com/haotian-dada666/p/9844875.html
Copyright © 2011-2022 走看看