Javascript点击事件触发两次,已经停止传播

Javascript click event fired twice, already stopping proagation

本文关键字:两次 传播 事件 Javascript      更新时间:2023-09-26

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

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

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

在同一页,我有一个类似的情况,B。这里的问题是:一旦我第一次点击B,每次我点击A,点击元素被触发两次。我在谷歌上搜索过,但我发现的唯一结果都是关于停止事件传播的需要。

我已经这么做了。

让它奇怪的是,这个问题只存在于我第一次点击B,否则它工作完美。

任何想法?为了更好地理解问题,请提出任何问题。

感谢大家在评论中提出的想法。正如@StefanBaiu所建议的,函数被初始化了两次:

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

当点击B时,我包含了新的内容,导致$includeContentLoaded再次被触发。

如何解决这个问题:

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