我正在尝试重现 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); });
}
最佳答案
我认为你可以使用 ' 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/