之前就一直受这个问题的困扰,在写ajax加载数据的时候发现,后面追加进来的demo节点元素,失去了之前的点击事件。为什么点击事件失效,我们该怎么去解决呢?那么,我们通过下面的示例简单说明。

示例如下:

<div>
<ul id="demo">
<li>Kubernetes:下一代分布式系统的护戒使者</li>
<li>机器学习工具--Pandas cheat sheet</li>
<li>Android 8.0 正式版即将发布 谷歌还要建超人模型</li>
...
//li是动态生成
</ul>
</div> <script type="text/javascript">
//动态像ul的末尾追加一个新元素
$("#demo").append('<li>Kubernetes:下一代分布式系统的护戒使者</li>');
$("#demo").append('机器学习工具--Pandas cheat sheet');
$("#demo").append('Android 8.0 正式版即将发布 谷歌还要建超人模型');
...
</script>

错误示范:

// 示范一
$("#demo li").click(function(){
alert($(this).html());
});
// 示范二
$("#demo li").on('click',function(){
alert($(this).html());
});

通过运行以上代码,就会发现动态生成的标签事先绑定的点击事件点击了没反应。总结一下,推测上面这个监听函数,是在网页加载的时候就指定了对象,而通过代码追加,如通过js追加的元素,是不能匹配这个事件的。那么,我们应该使用什么来绑定动态元素呢,支持给动态元素和属性绑定事件的是live和on,其中live在JQUERY 1.7之后就不推荐使用了。现在主要用on,使用on的时候也要注意,on前面的元素也必须在页面加载的时候就存在于dom里面。动态的元素或者样式等,可以放在on的第二个参数里面。

正确示范:

$("#demo").on('click', 'li',function(){
alert($(this).html());
});

以上所述是小编给大家介绍的jQuery on()方法绑定动态元素的点击事件的相关知识,希望对大家有所帮助。

jQuery绑定动态元素的点击事件无效的更多相关文章

  1. jQuery on()方法绑定动态元素的点击事件无效

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

  2. jQuery on()方法绑定动态元素的点击事件无响应的解决办法

    $('#check_all').on('click' , function(){ alert(1); }); $("#yujinlist").append(html); count ...

  3. jQuery on()方法绑定动态元素的点击事件

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

  4. jQuery on()方法绑定动态元素的点击事件实例代码浅析

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

  5. JS动态append之后点击事件无效

    今天做项目用了append向HTML里面添加结构代码,代码添加之后,单击事件就没反应了.搞得我一脸懵逼,调了代码很久实在不行,我百度了一下才发现,append添加的节点单击事件是不会生效的. 原因: ...

  6. jquery 绑定动态元素

    以一个小例子来简单说明下情况 ? 1 2 3 4 5 6 7 8  <script src="jquery-1.11.0.min.js"></script> ...

  7. jQuery触发<a>标签的点击事件无效

    <a id="workFrame" href="pages/work.html" target="FrameBox">首页< ...

  8. 关于jQuery出现的新添加元素点击事件无效

    //通常点击写法: $(".div").on('click', function () { var $this = $(this); var isActive = $this.ha ...

  9. jquery无法为动态生成的元素添加点击事件的解决方法

    遇到 jquery无法为动态生成的元素添加点击事件,谷歌一下,整理一下解决方法如下: (<li>中间的元素是动态生成的), 现在想为<i>添加点击事件, 例子如下: <d ...

随机推荐

  1. 模板 - 洲阁筛 + min25筛

    好像在某些情况下杜教筛会遇到瓶颈,先看着.暑假学一些和队友交错的知识的同时开这个大坑.

  2. Cannot set headers after they are sent to the client

    D:\le\node_modules\mysql\lib\protocol\Parser.js: throw err; // Rethrow non-MySQL errors ^ Error [ERR ...

  3. ZOJ3164【区间dp】

     题意: 有n个人,有一种关系叫做8g关系,给出m个关系,给出n个人的阵列 问你最多能拿走多少人,拿走以后相邻就是相邻了 思路: 典型的区间dp: dp[i][j] 代表 i-j 最多能去多少人: 如 ...

  4. 机智云连接ESP8266--远程控制点亮RGB灯

    概述 智能灯,是一个简单常见的智能产品,硬件电路简单,程序本身也不复杂:下面我们使用esp8266开发板和机智云云端,实现如何将一个传统的灯泡,改造成可以远程控制开关的智能灯. 1.准备工作 硬件: ...

  5. iOS 7:漫谈#define 宏定义

           #define宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开 ...

  6. 基于http的软件仓库

    这是企业中常用的方法 比如一台服务器准备好了,公司必然要安装一些应用 这时可以用这种方法批量安装应用 运行一条命令,服务器就会自己去连接软件仓库,去下载来安装. [root@webmaster htm ...

  7. jq解析json文件

    $.ajaxSettings.async = false;//同步还是异步 $.getJSON(URL,function(data){ //成功后执行 })

  8. laravel使用swoole

    参考 参考2 另外主要用到artisan 首先创建SwooleCommand.php <?php namespace App\Console\Commands; use App\Http\Con ...

  9. 推荐一个VPS

    有日本节点,不贵,用了两个月,感觉不错 http://www.vultr.com/?ref=6847480

  10. bootstrap基本组件

    bootstrap分页   <nav>      <ul class="pagination">       <li><a href=&q ...