addEventListener只触发一次

时间:2015-02-26 12:24:54

标签: javascript javascript-events

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

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

1 个答案:

答案 0 :(得分:5)

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

document.body.innerHTML += response;
链接click上的

。这会消除所有现有DOM元素及其事件,并创建新的DOM结构,但不会分配click