我无法弄清楚如何从页面上的元素中删除事件侦听器。此事件导致两个脚本之间出现问题,摆脱它会很棒!
以下是它的添加方式;
if (CT_I_EnableExitTracking) {
if (document.addEventListener) //handle DOM 2 (Mozilla 6)
document.addEventListener('click', CT_ProcClick, false);
else
document.attachEvent('onclick', CT_ProcClick);
}
..它需要从此标记中删除(来自flexslider 2插件)..
<ul class="flex-direction-nav">
<li><a class="flex-prev" href="#">Previous</a></li>
<li><a class="flex-next" href="#">Next</a></li>
</ul>
此div中的链接是问题所在。我该如何定位他们?我尝试了各种各样的想法,但我似乎没有正确的语法(使用jQuery太多时间,我认为没有真正的jS知识!!)
var prev = document.getElementsByClassName("flex-prev");
prev.removeEventListener('click', CT_ProcClick, false);
谢谢!
答案 0 :(得分:1)
当您尝试从document
删除事件侦听器时,您正在为flex-prev
对象分配事件侦听器。
此外,document.getElementsByClassName("flex-prev")
返回NodeList。在这种情况下,您应该循环通过:
[].forEach.call(prev, function(obj, i) { ... });
或引用单个实例:
document.getElementsByClassName("flex-prev")[0]
。
但是在你的情况下,你应该检查事件监听器的函数是否event.target具有类“flex-prev”。像这样:
function CT_ProcClick(evt) {
var target = evt.target || evt.srcElement;
if (!!~target.className.indexOf("flex-prev")) {
return false;
}
...
}