解决给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 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
TextArea设置MaxLength属性最大输入值的js代码
Dec 21 Javascript
jquery图形密码实现方法
Mar 11 Javascript
Vue.js第四天学习笔记(组件)
Dec 02 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 Javascript
Three.js入门之hello world以及如何绘制线
Sep 25 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
vue 全局封装loading加载教程(全局监听)
Nov 05 Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python 爬取微信文章
2016/01/30 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
浅析python中的del用法
2020/09/02 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
电工工作职责范本
2014/02/22 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
优秀纪检干部材料
2014/08/27 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
Java无向树分析 实现最小高度树
2022/04/09 Javascript
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL