javascript - jq click事件重复执行的问题
问题描述
求助,jq动态生成的元素需要用on来绑定点击事件才生效,而执行on的函数里面也有点击事件,然后函数就被执行了两次,这样的情况该怎么解决?
问题解答
回答1:用event对象找到你真正想点击的目标
回答2:其实,无非就是事件绑定了2次或者事件冒泡引起的;1,解除事件,再绑定
$(ele).unbind(’click’).click(function() {// to do })
2,取消冒泡
$(ele).click(function(e){ e.stopPropagation();});回答3:
先去除监听,后监听.off(handler).on(handler)
回答4:这是冒泡? e.stopPropagation()
回答5:off 先解绑 在绑定
回答6:$(’document’).unbind(’click’).click(function() { //dosomething })回答7:
function removeMaopao(ev){var eEvent = ev || event;eEvent.stopPropagation() && eEvent.stopPropagation;return false; }回答8:
楼上的说的比较清楚了。1.找到问题 1.1 是绑定了两次,因为动态生成的元素绑定了一个事件,但是在这个事件中又去调用了之前绑定的事件
$(’document’).unbind(’click’).click(function() { //取消绑定的回调事件})
1.2 还是 事件的冒泡导致(如果不熟悉冒泡,请先看下相关资料)
$(’document’).click(function(e){ //取消事件冒泡 e.stopPropagation();});
2.动态生成的元素其实可以不一定需要使用动态的绑定事件
使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。点击这里查看详细文档:http://www.w3school.com.cn/jq...
$('p').delegate('button','click',function(){ $('p').slideToggle();});回答9:
记得on()之后off()掉
相关文章:
1. node.js - 我是一个做前端的,求教如何学习vue,node等js引擎?2. docker images显示的镜像过多,狗眼被亮瞎了,怎么办?3. docker api 开发的端口怎么获取?4. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?5. 如何解决docker宿主机无法访问容器中的服务?6. 老师,flex-shrink: 1; 按视频操作,不会自动缩放7. java - 为什么第一个线程已经释放了锁,第二个线程却不行?8. sublime-text - sublime text 3中编译python(sublimeREPL),如何仅运行单行/选定部分9. 前端 - 类到底该如何去命名 .newsList 这种的命名难道真的不是过度语义化吗?~10. PHP中的$this代表当前的类还是方法?

网公网安备