解决给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 相关文章推荐
jquery 多级下拉菜单核心代码
May 21 Javascript
JavaScript 垃圾回收机制分析
Oct 10 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
jQuery实现简单的网页换肤效果示例
Sep 18 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
webpack构建react多页面应用详解
Sep 15 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
解决webpack dev-server不能匹配post请求的问题
Aug 24 Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 Javascript
js DOM的事件常见操作实例详解
Dec 16 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读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python translator使用实例
2008/09/06 Python
python实现统计代码行数的方法
2015/05/22 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
Python处理Excel文件实例代码
2017/06/20 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python根据url地址下载小文件的实例
2018/12/18 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
Jar包的作用是什么
2014/03/30 面试题
关于人生的感言
2014/01/17 职场文书
生日寿宴答谢词
2014/01/19 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL