我正在尝试重现Google地图的addListener
,但点击,按键等的jQuery监听器除外。
在Moogle地图中,您可以用{drag','mouseover'等编写.event.addListener(map, 'click', function()...
或替换'click'。对于jQuery,我看到与'click','keypress'等并行的< / p>
我陷入了你可以将触发器类型作为变量传递的程度。声明单个包装器侦听器很简单,比如
function addClickListener(id, fn) {
$(id).click(function() { fn(event); });
}
// and
function addKeyPressListener(id, fn) {
$(id).keypress(function() { fn(event); });
}
我正在寻找的是破碎的,如下所示。我无法弄清楚Google如何传递像“click”这样的字符串并将该调用作为一个函数。也许用eval
? 颤动
function addListener(id, type, fn) {
typeFn = $.type;
$(id).typeFn(function() { fn(event); });
}
答案 0 :(得分:2)
我认为你可以在这里使用'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); });