0

我正在尝试重现谷歌地图,addListener除了用于点击、按键等的 jQuery 侦听器。

在 Moogle 地图中,您可以.event.addListener(map, 'click', function()...使用“拖动”、“鼠标悬停”等编写或替换“点击”。对于 jQuery,我看到与“点击”、“按键”等类似的内容。

我被困在您可以将触发器类型作为变量传递的地步。声明单独的包装监听器很简单,比如

  function addClickListener(id, fn) {
    $(id).click(function() { fn(event); });
  }      

  // and

  function addKeyPressListener(id, fn) {
    $(id).keypress(function() { fn(event); });
  }

我要找的东西坏了,如下所示。我不知道谷歌如何传递一个像“点击”这样的字符串并使那个调用成为一个函数。也许与eval不寒而栗

  function addListener(id, type, fn) {
    typeFn = $.type;
    $(id).typeFn(function() { fn(event); });
  }

最后:http: //jsfiddle.net/YCVVL/

4

1 回答 1

2

我认为您可以在此处使用“方括号表示法”:

function addListener(id, type, fn) {
    $(id)[type](function() { fn(event); }); //< here
}

或使用以下之一:

$(id).on(type, function() { fn(event); });
$(id).bind(type, function() { fn(event); });
于 2012-04-14T19:01:37.713 回答