解决给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 相关文章推荐
分享别人写的一个小型js框架
Aug 13 Javascript
基于jquery的loading 加载提示效果实现代码
Sep 01 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
Apr 26 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
JavaScript事件用法浅析
Oct 31 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
深入探究angular2 UI组件之primeNG用法
Jul 26 Javascript
JavaScript实现多重继承的方法分析
Jan 09 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
Jul 12 Javascript
微信公众号平台接口开发 获取access_token过程解析
Aug 14 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 高效率写法 推荐
2010/02/21 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
jqPlot Option配置对象详解
2009/07/25 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python的Flask框架与数据库连接的教程
2015/04/20 Python
python和ruby,我选谁?
2017/09/13 Python
Python装饰器用法实例总结
2018/05/26 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python调用外部程序的实操步骤
2019/03/04 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python如何求圆的面积
2020/07/01 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
预备党员思想汇报范文
2013/12/29 职场文书
元宵节主持词
2014/03/25 职场文书
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android