关于javascript事件的一个问题
我现在有个需求。在DOM里有某一个通过addEventListeners方法添加click事件的节点上注册一个新的click事件,要求是执行我这个事件处理程序不执行原来的...
我现在有个需求 。在DOM里有某一个通过addEventListeners方法添加click事件的节点上注册一个新的click事件,要求是执行我这个事件处理程序 不执行原来的事件处理程序 通过stopImmediatePropagation没有办法阻止,无论我的事件是定义冒泡阶段 还是捕获阶段,都没办法拦截原有事件,求高手帮助。
例
HTML
<div id="xxx" style="height:100px; width:100px; background-color:#CCC">
</div>
JS:
function test0(){
alert(0);
}
var myDiv = document.getElementById("xxx");
myDiv.addEventListener("click",test0,false);
然后我想通过
function testStop(){
alert("stop");
event.stopImmediatePropagation();
}
myDiv.addEventListener("click",testStop,true)阻止 test0执行。 可不行。请大神帮忙啊。 展开
例
HTML
<div id="xxx" style="height:100px; width:100px; background-color:#CCC">
</div>
JS:
function test0(){
alert(0);
}
var myDiv = document.getElementById("xxx");
myDiv.addEventListener("click",test0,false);
然后我想通过
function testStop(){
alert("stop");
event.stopImmediatePropagation();
}
myDiv.addEventListener("click",testStop,true)阻止 test0执行。 可不行。请大神帮忙啊。 展开
4个回答
展开全部
addEventListener是添加,removeEventListener是移除,但是这个移除需要有个名称,如果是addEventListener一个匿名函数的,removeEventListener应该就无能为力了,addEventListener是添加嘛,可以添加多个函数,但是removeEventListener却只能一个一个的移除,还要知道名称,这就难了,应该说这个东西是有点鸡肋的,至少应该有个“removeAllEventListener”的东西来移除所有绑定到上面的函数嘛,可惜没有。对于removeEventListener,个人觉得没什么用武之地,还是“document.onkeydown=function(){}”这样的形式更实用
展开全部
stopPropagation() 停止当前的事件流传播,但不会停止当前正在处理的对象。IE 中用 event.cancelBubble = true 实现类似功能。
可以用removeEventListener 方法来取消添加的事件监听。 为了兼容性,可以用下面的方法
function removeEvent(obj,ev,fn){
if(obj.detachEvent){
obj.detachEvent('on'+ev,fn)
}
else{
obj.removeEventListener(ev, fn, false);
}
取消:
removeEvent(myDiv,null,"test0")
追问
现在的问题是不我不知道事件名是什么。没办法移除。比如 我想给所有dom结点添testStop方法,就要循环遍历结点。不可能知道以前每个dom都有什么click事件。
追答
removeEvent(myDiv,"click",test0) ,你是不清楚 test0加在了什么事件上?也就是不知道是click,还是dblclick?
你添加的时候一定是知道的啊。 JS提供的方法就是如此,你只能想办法来适应它。 比如你可以在添加事件前记录这些信息。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然你能addEventListener添加事件, 就可以用removeEventListener把事件删除吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接覆盖~
myDiv.onclick = testStop;
myDiv.onclick = testStop;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询