解决给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 相关文章推荐
Google Map Api和GOOGLE Search Api整合实现代码
Jul 18 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
Oct 27 Javascript
关于jQuery中.attr()和.prop()的问题探讨
Sep 06 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
Ajax实现不刷新取最新商品
Mar 01 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
JavaScript表单即时验证 验证不成功不能提交
Aug 31 Javascript
微信小程序之页面拦截器的示例代码
Sep 07 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
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判断正常访问和外部访问的示例
2014/02/10 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
JS DOM 操作实现代码
2010/08/01 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python简单生成随机数的方法示例
2018/03/31 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
python生成器推导式用法简单示例
2019/10/08 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
护理专业个人求职简历的自我评价
2013/10/13 职场文书
护士演讲稿范文
2014/01/05 职场文书
拾金不昧表扬信范文
2014/01/11 职场文书
西门豹教学反思
2014/02/04 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
职业规划实施方案
2014/06/10 职场文书
公司踏青活动方案
2014/08/16 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫