jQuery获取动态添加的元素

字号+ 作者:alpha 来源:www.seoalphas.com 2018-07-15 11:22 浏览次数(157)

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

一、问题描述

  用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() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。

2016062410120311.png

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


示例代码:

html部分:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>jQuery on()方法测试</title>
</head>
<body>
<button id="click1">Click me!</button>
<p>Hello,</p>
<script src="js/jquery.min.js"></script>
<script src="js/test.js"></script>
</body>
</html>

JS部分:

$().ready(function(){
  $("#click1").bind("click",function(){
    $("p").append("<div class='new'><b>I'm clicked!</b></div>");
  });
  //on方法要先找到原选择器(p),再找到动态添加的选择器(.new)
  $("p").on("click",".new",function(){
    $(this).remove();
  });
});

js中第6行实现了为动态添加的.new元素绑定click事件。应注意的是,虽然是为.new绑定事件,但on()方法却是绑定在原选择器<p>上的,然后将.new放在了参数列表中,原理参照上文on()的官方定义和用法。


注意:

如果报$(…).on is not a function 错误 

可能是你的jQuery的插件版本过低,将jQuery换成高版本的即可。


标签
jQuery动态获取

本站部分技术文章为参考网上实用内容发布,目的是记录踩坑经验,若未备注来源而侵犯了您原创文章权益,请联系博主删除;对文章有不同看法的朋友欢迎在评论区留言互动

相关文章
  • DIV半透明层 CSS来实现网页背景半透明

    DIV半透明层 CSS来实现网页背景半透明

    浏览次数:817

  • Iframe 用法的详细讲解

    Iframe 用法的详细讲解

    浏览次数:663

  • CSS实现背景透明,文字不透明,兼容所有浏览器

    CSS实现背景透明,文字不透明,兼容所有浏览器

    浏览次数:583

  • Flex 布局教程:语法篇

    Flex 布局教程:语法篇

    浏览次数:432

  • pc端常用电脑屏幕 ((响应式PC端媒体查询)电脑屏幕分辨率尺寸大全)

    pc端常用电脑屏幕 ((响应式PC端媒体查询)电脑屏幕分辨率尺寸大全)

    浏览次数:419

  • Flex 布局教程:实例篇

    Flex 布局教程:实例篇

    浏览次数:369

  • css3中的width:100vh以及calc(100vh + 10px) 视窗高度/宽度

    css3中的width:100vh以及calc(100vh + 10px) 视窗高度/宽度

    浏览次数:324

  • 如何让html的div内容溢出后显示滚动条

    如何让html的div内容溢出后显示滚动条

    浏览次数:220

网友点评
功能开发中......其实是博主懒了而已......
0.609375s