嵌套函数调用"点击" javascript中的事件

时间:2017-10-07 17:40:24

标签: javascript function ecmascript-6

这是我的代码,现在有些人可能会说为什么不在这个功能块中包含一行代码,但我不想,我该如何实现。如何调用this.click方法"点击"按钮的事件

 var i = 0;
function el() {
    this.type = "button",
    this.el = false,
    this.click = function () {
        this.setHtml(i++);
    },
    this.setHtml = function (t) {
        this.el.innerHTML = t;
    }
    fragment = document.createDocumentFragment(),
        element = fragment.appendChild(document.createElement(this.type));
    element.setAttribute("data-el", this.type);
    element.innerHTML = "Default Button";
    this.el = element;
    attachEvent("click", this);
}
// this should be a seperate function ....
function attachEvent(ev, me){
//me doesn't work, but i want it to call the click method
    me.el.addEventListener("click", me.click, false);//....

}


div  = new el();
document.getElementById('areaA').appendChild(div.el);

1 个答案:

答案 0 :(得分:1)

改变这个:

me.el.addEventListener("click", me.click, false);//....

到此:

me.el.addEventListener("click", me.click.bind(me), false);//....

当您仅传递me.click时,您只是传递对click函数的引用,并且对me的绑定将丢失。 .bind()将创建一个自绑定存根函数,在调用事件处理程序时将为您提供正确的this值。