如何通过params传递客户密钥处理程序?

时间:2012-04-27 14:01:36

标签: javascript jquery

所以说我有这个......

  keyup_handler: function(e, item){
    if (e.which == 27) {
      close_lightbox(item);
      return false;       
    };
  }

$(document).live('keyup', function(e){ keyup_handler(e, item) });

这不会返回任何console.log()我放在这里。所以我认为它没有被触及。我错过了什么?如何将eevent传递给keyup_handler?

jQuery 1.4.4

4 个答案:

答案 0 :(得分:1)

您正在从false的调用中返回keyup_handler,但不会从调用它的函数返回$(document).live('keyup', function(e){ return keyup_handler(e, item); }); ,请尝试执行以下操作:

keyup_handler

如果return true;语句的评估结果为真,您可能还需要将if略微修改为{{1}}。

我在这里假设您非常模糊的“不起作用”声明意味着当您释放相应的密钥时,不会阻止通常的密钥更新功能。

此外,.live()是一个不推荐使用的jQuery函数,并不适合您正在使用它的内容。使用.on()(如果您使用的是jQuery 1.7+)或.bind()

答案 1 :(得分:0)

试着在jQuery中查看keyup()

答案 2 :(得分:0)

试试这个 - >

$(document).live('keyup', function(e){
    if (e.which == 27) {
close_lightbox(<selector-that selects-item>);
      return false;       
    }; });

答案 3 :(得分:0)

keyup_handler = function(e, item){
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code == 27) {
      close_lightbox(item);
      return false;       
    }
}

$(document).on('keyup', 'dynamic_element', function(e){ keyup_handler(e, item) });​

FIDDLE

live()已被弃用,并且不确定为什么需要在文档中使用它? 对于旧版本的jQuery,我认为这就足够了:

$(document).keyup(function(e){ keyup_handler(e, item) });​​​​​​​​​

除非你以某种方式设法将文档级别变为动态元素?