解决给dom元素绑定click等事件无效问题的方法


Posted in Javascript onFebruary 17, 2017

之前一直遇到js插件生成的元素,click事件无效的问题,重新绑定也不行,终于找到解决方法,在此记下来。

同时加深对js事件处理机制的理解。

1. 事件被解绑

这种情况下一般不会导致click失效,但以下情况,click事件就失效了:

$(function(){
 $('.btn').unbind()
})
$('.btn').click(function(){
 //...
 })

所以,click事件要有个好习惯:

$(function(){
 $('.btn').click(function(){
 //...
 })
})

2. js插件异步/动态加载dom

一般含有等待时间/开始运行时间:WaitTime

此时直接绑定/监听无效:

$(function(){
 $('.container .btn').on('click',function(){
 //...
 })
})

解决方法1:

$(function(){
 setTimeout(function{ 
 $('.container .btn').click(function(){
  //...
  })
 //.btn 加载后事件 
 },WaitTime) 
})

解决方法2(事件委托,即委托给父元素):

$(function(){
 $('.container').on('click','.btn',function(){
 //...
 })
})

3. ajax 异步加载的dom

  • 可以在done()函数体中加click事件
  • 同2中的事件委托方法。

4. 点击链接无反应

以下代码会导致a标签有href也无法跳转

$(function(){
 $('a').on('click',function(e){
 e.preventDefault()
 //...
 })
})

解决方法:

$(function(){
 $('a').on('click',function(e){
 e.preventDefault()
 //...
 })
 $('a').unbind()
})

小结

1.事件绑定,事件监听,事件委托 相关链接

2.事件捕获与冒泡 相关链接

target.addEventListener(type, listener[, options]);
 target.addEventListener(type, listener[, useCapture]);

事件捕获

父元素先发生,子元素后

事件冒泡

子元素先发生,父元素后

3.javascript执行顺序

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript学习笔记(十二) RegExp类型介绍
Jun 20 Javascript
js带按钮的提示框可供选择示例代码
Sep 17 Javascript
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
js单词形式的运算符
May 06 Javascript
jquery+ajax实现跨域请求的方法
Jan 20 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
javascript-解决mongoose数据查询的异步操作
Dec 22 Javascript
Angular4 中常用的指令入门总结
Jun 12 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
Aug 17 Javascript
js实现登录与注册界面
Nov 01 Javascript
Javascript Worker子线程代码实例
Feb 20 Javascript
Vue.js原理分析之observer模块详解
Feb 17 #Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 #Javascript
Bootstrap表单使用方法详解
Feb 17 #Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 #Javascript
javascript基础知识之html5轮播图实例讲解(44)
Feb 17 #Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 #Javascript
数组Array的排序sort方法
Feb 17 #Javascript
You might like
几个学习PHP的网址
2006/11/25 PHP
php遍历数组的方法分享
2012/03/22 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
深入理解Python 多线程
2020/06/16 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
招商业务员岗位职责
2013/12/16 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
C++程序员求职信范文
2014/04/14 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
光荣之路观后感
2015/06/12 职场文书
单位更名证明
2015/06/18 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis