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 结构,而没有分配 click
s。
作为我正在创建的 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 结构,而没有分配 click
s。