addEventListener 只触发一次

addEventListener only firing once

作为我正在创建的 JS 模块的一部分,我正在向与特定选择器匹配的所有链接添加点击事件。它看起来像这样。

var Lightbox = (function () {

  var showLightbox = function () {
    // this does stuff
  };

  var init = function () {
    var links = document.querySelectorAll(options.selector);
    for(var i = 0; i < links.length; i++) {
      links[i].addEventListener('click', function() {
        showLightbox();
      }, false);
    }  
  };

  return {
    init: init
  };

})();

Lightbox.init();

首先加载页面上与选择器匹配的所有链接。还有一个 closeLightbox() 方法可以正常工作。但是,当第二次单击链接时,没有任何反应。我没有收到任何控制台错误 – nuffin。

是不是我在添加事件监听器的时候做错了什么?

编辑: 我更新了代码以删除一些多余的方法,并在此处粘贴了完整代码:http://pastebin.com/mC8pSAV2

您正在重新分配整个文档的 innerHTML

document.body.innerHTML += response;

在 link click 上。这将清除所有现有的 DOM 元素及其事件,并创建新的 DOM 结构,而没有分配 clicks。