求助,jq动态生成的元素需要用on来绑定点击事件才生效,而执行on的函数里面也有点击事件,然后函数就被执行了两次,这样的情况该怎么解决?
其实,无非就是事件绑定了2次或者事件冒泡引起的;
1,解除事件,再绑定
$(ele).unbind('click').click(function() {
// to do
})
2,取消冒泡
$(ele).click(function(e){
e.stopPropagation();
});
function removeMaopao(ev){
var eEvent = ev || event;
eEvent.stopPropagation() && eEvent.stopPropagation;
return false;
}
楼上的说的比较清楚了。
1.找到问题
1.1 是绑定了两次,因为动态生成的元素绑定了一个事件,但是在这个事件中又去调用了之前绑定的事件
$('document').unbind('click').click(function() {
//取消绑定的回调事件
})
1.2 还是 事件的冒泡导致(如果不熟悉冒泡,请先看下相关资料)
$('document').click(function(e){
//取消事件冒泡
e.stopPropagation();
});
2.动态生成的元素其实可以不一定需要使用动态的绑定事件
使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)。
点击这里查看详细文档:http://www.w3school.com.cn/jq...
$("div").delegate("button","click",function(){
$("p").slideToggle();
});
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
用event对象找到你真正想点击的目标