我正在制作一个包含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
参数怎么办?
答案 0 :(得分:1)
您需要将您的函数绑定到范围,如下所示:
$('#show-hidden-tables').click(function(ev) {
this.togglePrivateRows_();
}.bind(this));
对于你的第二个问题"如果我需要在我的函数中使用ev参数怎么办?"
即使在第一种方法中,ev
参数也会作为参数传递给this.togglePrivateRows_
函数