如何绑定html内联onclick处理程序?

时间:2017-09-29 21:21:37

标签: javascript html5

我试图使用内联onclick处理程序,但我需要绑定到它创建的这个上下文,而不是dom元素本身的这个,但对于我的生活,我可以&#39 ;让这个工作:

onclick="${this._sortTable.bind(this, i)};"

请让我走上正轨。

我使用es6和模板文字:

var container = `<div class="column" style="flex: 0 0 ${WIDTH} !important" data-index="${columnObject.index}" onclick="${this._sortTable.bind(this, i)};">${columnObject.title}</div>`;

我收到以下错误:

Uncaught SyntaxError: Unexpected token (

dom元素肯定看起来很奇怪:

<div class="column" style="flex: 0 0 5.555555555555555% !important" data-index="column7" onclick="function () { [native code] };">COLUMN7</div>

2 个答案:

答案 0 :(得分:0)

您可以将_sortable定义为static

class函数

&#13;
&#13;
class FN {
  constructor(prop) {
    const div = `<div onclick="FN._sortable(${prop})">click</div>`;
    console.log(div);
    document.body.innerHTML += div;
  }
  static _sortable(n) {
    console.log(n)
  }
}

let c = new FN(123);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用该代码,您将尝试处理&#34; bind&#34;的输出。当它插入DOM时作为字符串。

最明显的解决方案是首先创建DOM对象,然后将处理程序附加到对象,然后将对象插入DOM。

您甚至可能不需要使用bind来访问&#34;这个&#34;对象 - 特别是如果你创建了一个&#34; me&#34;别名。