关于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执行。 可不行。请大神帮忙啊。
展开
 我来答
lvyingtang
推荐于2016-03-22 · TA获得超过645个赞
知道小有建树答主
回答量:675
采纳率:100%
帮助的人:706万
展开全部
addEventListener是添加,removeEventListener是移除,但是这个移除需要有个名称,如果是addEventListener一个匿名函数的,removeEventListener应该就无能为力了,addEventListener是添加嘛,可以添加多个函数,但是removeEventListener却只能一个一个的移除,还要知道名称,这就难了,应该说这个东西是有点鸡肋的,至少应该有个“removeAllEventListener”的东西来移除所有绑定到上面的函数嘛,可惜没有。对于removeEventListener,个人觉得没什么用武之地,还是“document.onkeydown=function(){}”这样的形式更实用
kevintop3
2013-09-11 · TA获得超过1.5万个赞
知道小有建树答主
回答量:890
采纳率:100%
帮助的人:535万
展开全部
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提供的方法就是如此,你只能想办法来适应它。 比如你可以在添加事件前记录这些信息。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱心善行共赢
2013-09-11 · TA获得超过313个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:269万
展开全部
既然你能addEventListener添加事件, 就可以用removeEventListener把事件删除吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友59d1d93f2
2013-09-13 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1063
采纳率:100%
帮助的人:684万
展开全部
直接覆盖~
myDiv.onclick = testStop;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式