【问题标题】:Jquery hotkeys can't send value with functionJquery热键不能用函数发送值
【发布时间】:2018-02-19 11:40:44
【问题描述】:

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

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

但这不是:

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

即使这样也行不通:

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

【问题讨论】:

  • 绑定事件接受回调函数而不是函数的结果
  • 那么解决办法是什么?你只能使用没有值的函数?
  • dothis 提供了函数reference,该函数在每次事件发生时运行。 dothis() 仅在定义事件处理程序时提供函数的结果

标签: javascript jquery hotkeys jquery-hotkeys


【解决方案1】:

你必须给绑定一个函数作为参数

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

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

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

【讨论】:

    【解决方案2】:

    你也可以使用柯里化函数。它的函数返回函数。

    function doThis (num) {
      return function () {
        // Do something with num
      }
    }
    
    $(document).bind('keydown', 'm', dothis(6))
    

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多