0

我想知道为什么这适用于 jquery 热键:

$(document).bind('keydown', 'm', dothis);

但这不是:

$(document).bind('keydown', 'm', dothis(6));

即使这样也行不通:

$(document).bind('keydown', 'm', dothis());
4

2 回答 2

2

您必须为绑定提供一个函数作为参数

在第二种和第三种情况下,您将给出一个被评估的函数调用,并将返回的值提供给 keybind 函数 - 大概您没有返回一个函数并且什么都不做。

如果您想从已有的函数中构造一个带有设置参数的新函数,请使用bind

$(document).bind('keydown', 'm', dothis.bind(null, 6));

于 2017-09-11T09:23:11.073 回答
0

您还可以使用咖喱函数。它的函数返回函数。

function doThis (num) {
  return function () {
    // Do something with num
  }
}

$(document).bind('keydown', 'm', dothis(6))
于 2017-09-11T09:32:44.487 回答