javaScript - 从某些链接中删除事件

时间:2013-11-27 11:52:11

标签: javascript events flexslider

我无法弄清楚如何从页面上的元素中删除事件侦听器。此事件导致两个脚本之间出现问题,摆脱它会很棒!

以下是它的添加方式;

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);

谢谢!

1 个答案:

答案 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;
  }

  ...
}