解决jQuery使用append添加的元素事件无效的问题


Posted in jQuery onAugust 30, 2018

jquery api官方的例子在新增的元素上添加事件

$(document).on("click",'#lyysb a',function(){
 if(!$(this).hasClass('cur')){
  $(this).addClass('cur');
 } else {
  $(this).removeClass('cur');
 }
});

on() 方法在被选元素及子元素上添加一个或多个事件处理程序。

自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。

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

提示:如需移除事件处理程序,请使用 off() 方法。

提示:如需添加只运行一次的事件然后移除,请使用 one() 方法。

*把事件绑定在docunmet就和原来的live方法没有区别了。原先的live()方法,处理函数是默认绑定在document对象上不能变的,如果DOM嵌套结构很深,事件冒泡通过大量祖先元素会导致较大的性能损失。而使用.on()方法,事件只会绑定到$()函数的选择符表达式匹配的元素上,因此可以精确地定位到页面中的一部分,而事件冒泡的开销也可以减少。

例如我会在zkdiv中动态添加多个class=”zk”的dom节点,也想对动态增加的节点绑定相同的事件则可以通过以下代码实现

<div id="zkdiv">
 <input type="button" value="展开" id="zk" class="zk"/> <br>
</div>

//展开按钮点击触发事件

$("#zkdiv").on("click",".zk",function(){
 console.log("on 点击一次");
});
var html2 = "<input type='button' class='zk' value='新生成的展开' />";
$("#zkdiv").append(html2);

*这样一来处理函数就绑定到#zkdiv的选择器上去了,事件冒泡导致的性能损失会大大降低(使用该方法时要确保.on前面的选择器能选择到对象 否则不起作用)

click是点击事件,但是在页面加载完之后,jquery事件新添加的元素,用click的话是无法获取元素的,这个时候要用on去获取元素事件,简单的说页面加载完成时候页面显示的元素可以用on,也可以用click,但是页面加载完成之后后期再追加的元素只能用on。

以上这篇解决jQuery使用append添加的元素事件无效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
利用jQuery解析获取JSON数据
Apr 08 jQuery
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 #jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 #jQuery
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
Aug 28 #jQuery
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 #jQuery
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 #jQuery
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 #jQuery
JQuery扩展对象方法操作示例
Aug 21 #jQuery
You might like
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
做网页的一些技巧
2007/02/01 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
会计实习生自我鉴定
2013/12/12 职场文书
体育口号大全
2014/06/18 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
财务年终工作总结大全
2019/06/20 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电