无法在回调中调用函数

时间:2015-09-24 18:08:12

标签: javascript

我正在制作一个包含JavaScript和jQuery的网页。我有一个ID为“show-hidden-tables”的复选框,以及以下代码片段,用于附加点击处理程序。

$('#show-hidden-tables').click(this.togglePrivateRows_);

这是一个名为的函数:

togglePrivateRows_: function() {
  $('td[data-header="Private"]').each(function(index, elem) {
      if ($(this).text() === 'true') $(this).closest('tr').toggle();
  });
}

这很好用。但是,如果我将点击处理程序更改为:

$('#show-hidden-tables').click(function(ev) { this.togglePrivateRows_(); }) ;

它不再有效。为什么是这样?如果我需要在函数中使用ev参数怎么办?

1 个答案:

答案 0 :(得分:1)

您需要将您的函数绑定到范围,如下所示:

$('#show-hidden-tables').click(function(ev) {
    this.togglePrivateRows_();
}.bind(this));

对于你的第二个问题"如果我需要在我的函数中使用ev参数怎么办?"

即使在第一种方法中,ev参数也会作为参数传递给this.togglePrivateRows_函数