javascript - 制作通用 jQuery "addListener"

标签 javascript jquery

我正在尝试重现 Google map 的 addListener,但使用用于点击、按键等的 jQuery 监听器除外。

在 Moogle map 中,您可以编写 .event.addListener(map, 'click', function()... 或将 'click' 替换为 'drag'、'mouseover' 等。对于 jQuery,我看到了与“click”、“keypress”等相似的词。

我陷入了困境,您可以将触发器类型作为变量传递。声明单独的包装监听器很简单,例如

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

  // and

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

我正在寻找的内容已损坏,如下所示。我不明白谷歌如何传递像“click”这样的字符串并使该调用成为一个函数。也许用eval颤抖

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

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

最佳答案

我认为你可以使用 ' square bracket notation ' 这里:

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

或使用以下之一:

$(id).on(type, function() { fn(event); });
$(id).bind(type, function() { fn(event); });

关于javascript - 制作通用 jQuery "addListener",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10156390/

相关文章:

javascript - 如何在选择 dropdownItem 时向 ckeditor 添加下拉菜单/按钮以插入内容

JavaScript : dealing with arrays into object (in angular)

javascript - 如何在 Javascript 中获取图像的中心?

javascript - 插入 <br> 作为第一个逗号,并将所有点替换为 <br>

javascript - 当浏览器不活动时 jQuery 和 setTimeout 停止工作

javascript - 在窗口中获取第一个可见的 iFrame 并打印它

javascript - 将 Async/Await 与 Promise.all 与 for 循环一起使用

javascript - jQuery 在用新文本替换 HTML 文本时淡出它,而不是仅仅出现

javascript - 在组件上 react 数据网格过滤器

javascript - 用 Ajax 替换 Iframe