javascript - 如何将事件监听器添加到在原型(prototype)中动态创建的元素?

标签 javascript addeventlistener prototype-programming

HTML

<div id="main"></div>

JS

var TestClass = function() {};
TestClass.prototype = {
    addElement: function(parentId) {
    var parent = document.querySelector('#' + parentId);
    var a = document.createElement('a');
    a.textContent = '+';
    a.href = '#';
    a.addEventListener('click', this.onElementClick, false); //nothing happens on click
    parent.innerHTML = a.outerHTML;
  },

  onElementClick: function() {
    console.log('dynamic element clicked');
  }
};

new TestClass().addElement('main'); // on DOM ready

输出

<div id="main"><a href="#">+</a></div>

最佳答案

像这样:

var TestClass = function() {};
TestClass.prototype = {
    addElement: function(parentId) {
    var parent = document.getElementById(parentId); //Changed to getElementById
    var a = document.createElement('a');
    a.textContent = '+';
    a.href = '#';
    a.addEventListener('click', this.onElementClick, false);
    parent.append(a); //Changed
  },

  onElementClick: function() {
    console.log('dynamic element clicked');
  }
};

new TestClass().addElement('main'); // on DOM ready
<div id="main"></div>

您没有将 a 添加到 parent,而只是添加了它的 HTML。

关于javascript - 如何将事件监听器添加到在原型(prototype)中动态创建的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44370194/

相关文章:

javascript - 按类添加事件监听器,在 JS 中将 ID 作为参数传递

javascript - 如何使用揭示原型(prototype)模式在内部调用重写方法

javascript - 如何在javascript reactjs中转换日期格式

javascript - 单击按钮后隐藏元素

javascript - imacros javascript 有条件跳过数据提取

JavaScript:Object.method 与 Object.prototype.myMethod?

javascript - javascript中的私有(private)方法

javascript - 有什么办法可以获取在outlook上点击链接的人的电子邮件地址

javascript - JS li 标签 onclick 在 IE8 上不工作

javascript - 将 javascript 事件监听器附加到变量的理论?