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

Can't pass show() method in event handler (jquery)

本文关键字:方法 show jquery 事件处理 程序 不能      更新时间:2023-09-26

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

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

不起作用,然而,当我写这个的时候,它起作用了:

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

谁能解释一下为什么第一个版本不行?是否有一种方法可以使用显示方法,而无需在事件处理程序中编写匿名函数?

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

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

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

查看MDN关于Function.prototype.bind的文章

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