我需要在单击按钮时显示一个块,所以我这样做:
var container = $('#container');
$('button').on('click', container.show);
并且它不起作用,但是,当我写这个时,它起作用:
var container = $('#container');
$('button').on('click', function() {
container.show()
});
有人可以解释为什么第一个版本不起作用吗?有没有办法使用show方法而不在事件处理程序中编写匿名函数?
答案 0 :(得分:0)
我可能错了,但你可能会这样做:
var container = $('#container');
$('button').on('click', container.show.bind(container), false);
bind
方法本身应该创建一个匿名函数,这是.on
的第二个参数应该期望的。
请参阅此处了解Function.prototype.bind
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind