jquery事件委托off与on连用无效的问题
来源:互联网 发布:手机网络主播招聘 编辑:程序博客网 时间:2024/05/16 18:29
问题引出:
事件委托是一种非常常用的事件解决方案,也是很多人推荐作为首选的解决方案(事件委托有什么好处,为何推荐,跟本文要说的内容无关,可自行百度)。我们在事件处理的时候可能会这么用$selector.off(相关参数).on(相关参数)以防止重复委托事件。结果发现这种使用方式并不能起到防止重复委托事件的效果。先来个例子
<body> <div id='test'> <div id="subTest"></div> </div></body>
这里subTest所在元素是一个动态创建的元素。然后我们希望在创建subTest的时候,给subTest绑定一个点击事件,假设是通过
create=function(){ $("#test").html("<div id='subTest'></div>"); $("#test").off().on("click","#subTest",function() { console.log("事件绑定"); });};
如果调用两次create,再点击subTest,会发现点击一次,而控制台连续输出两次“事件绑定”,即off并未解除委托的事件。
问题解决:
1、在销毁subTest的时候,test也一起销毁,这样被委托到test的事件会跟着test的销毁而解除。这样只要在 下次调用create之前,先创建好test,并保证在事件委托前,test在页面是存在的即可
2、在创建subTest的时候,给subTest添加onclick属性,即上面 $("#test").html("<div id='subTest'></div>")
这句代码改为 $("#test").html("<div onclick='yourFunction()' id='subTest'></div>")
然后定义一个全局的yourFunction函数即可
0 0
- jquery事件委托off与on连用无效的问题
- jQuery高级事件---on、off、one和事件委托
- javascript 事件委托 和jQuery事件绑定on、off 和one
- javascript事件委托和jQuery事件绑定on、off 和one
- jquery 委托 on() | off()删除委托 | one()只执行一次的委托
- 使用 jquery 事件委托的 on 方法
- jQuery事件-绑定.on()和解绑.off()
- 浅谈jQuery代码优化之事件委托(事件绑定)——bind()|live()|delegate()|on()|off()|one()方法
- jQuery的事件绑定与事件委托
- jquery on()绑定事件无效
- 事件与委托的问题???
- jquery 常规绑定事件click与on委托绑定测试
- jQuery使用on()绑定动态生成元素的事件无效的问题
- jQuery使用on()绑定动态生成元素的事件无效的问题
- jQuery使用on()绑定动态生成元素的事件无效的问题
- Jquery的on,off事件详解,如何利用命名空间来解绑特定的事件
- 问题:jquery中的.on() .one() .off()函数
- jquery的事件委托-bind,live,delegate,on的区别
- APP中通过包名或类名启动另一个APP
- EditText状态变化——选中和未先中(底部变颜色的线)
- linux 定时任务
- C代码:指定路径删除N天之前的日志
- PAT 1019. General Palindromic Number (20)
- jquery事件委托off与on连用无效的问题
- android studio 常见问题
- 数据结构与算法(2)--数组和typedef的运用
- 树形递归遍历实现多级评论
- OC中私有方法和私有变量
- flink akka
- 二叉树遍历
- flink akka scala
- Android开发 消息推送 Push