无法在事件处理程序(jquery)中传递show()方法

时间:2014-05-23 16:19:57

标签: javascript jquery

我需要在单击按钮时显示一个块,所以我这样做:

var container = $('#container');

$('button').on('click', container.show);

并且它不起作用,但是,当我写这个时,它起作用:

var container = $('#container');

$('button').on('click', function() {
    container.show()
});

有人可以解释为什么第一个版本不起作用吗?有没有办法使用show方法而不在事件处理程序中编写匿名函数?

1 个答案:

答案 0 :(得分:0)

我可能错了,但你可能会这样做:

var container = $('#container');

$('button').on('click', container.show.bind(container), false);

bind方法本身应该创建一个匿名函数,这是.on的第二个参数应该期望的。

请参阅此处了解Function.prototype.bind

上的MDN文章

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind