Javascript click事件被触发两次,已经停止传播

时间:2014-07-31 20:59:41

标签: javascript

我有一个非常奇怪的问题,但是我无法在这里复制它,因为我无法追踪生成它的内容,它是200多行JS文件的一部分,我会尽力解释一下:

我的问题是关于DOM操作,我只使用vanilla JavaScript。

我有一个元素A,当你点击它时,会触发一个函数来显示div的内容,我只是使用addEventListener('click', function(){ ... }, false)。 它有效。

在同一页面上,我有类似的情况,B。问题所在:我第一次点击B时,每次点击A时,点击元素都会被触发两次。 我在google上搜索过,但我发现的唯一结果是讨论了阻止事件传播的必要性。

我已经这样做了。

令人感到奇怪的是,问题仅在我B第一次点击时才存在,否则效果会很好。

有什么想法吗?请提出任何问题,以便更好地了解问题。

1 个答案:

答案 0 :(得分:0)

感谢大家对评论中的想法。正如@StefanBaiu建议的那样,该函数被初始化了两次:

我正在使用angular来包含内容(这是一个局部视图),所以我正在监听$includeContentLoaded事件来初始化侦听事件的函数。

点击B时,我收到了新内容,导致$includeContentLoaded再次被解雇。

我是如何解决这个问题的:

var pageIncluded = true; // When loading the controller

$scope.$on('$includeContentLoaded', function() {
  if (pageIncluded) {
     // Inizialize the function
     pageIncluded = false;
  }
}