解决给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 相关文章推荐
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
jquery实现div阴影效果示例代码
Sep 16 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
Oct 10 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
在vue 中使用 less的教程详解
Sep 26 Javascript
Ant Design的Table组件去除
Oct 24 Javascript
Vue实现图书管理案例
Jan 20 Vue.js
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的引用计数机制
2013/06/14 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
推荐dojo学习笔记
2007/03/24 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python深度优先搜索和广度优先搜索
2018/02/07 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
Python绘制动态水球图过程详解
2020/06/03 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
行政办公室岗位职责
2014/03/18 职场文书
产品质量承诺书
2014/03/27 职场文书
贺卡寄语大全
2014/04/11 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
庆元旦演讲稿
2014/09/15 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
2014年校长工作总结
2014/12/11 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
个人工作年终总结
2015/03/09 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
python3实现无权最短路径的方法
2021/05/12 Python