在谷歌地图的addListener事件中传递函数
Passing function in the addListener event of the google maps
我正在构建一个javascript对象Map,以便能够通过Google Map处理事件。
我希望能够在事件发生时传递要执行的函数:
var MapMarker = (function ($) {
bindClickEvent = function (marker, action) {
google.maps.event.addListener(marker, 'click', action);
};
return {
bindClickEvent: bindClickEvent,
};
})(jQuery);
我试着这样称呼它:
var action = PartnerDetail.load(id); <=== it gets executed here
MapMarker.bindClickEvent(marker, action);
问题是它在调用之前执行,我希望能够传递任何要在addListener事件中执行的函数。
好吧。你已经回答了。将函数操作作为函数对象传递。重要的是要知道:当你执行函数并将其保存在变量(action)中时,action将不再是一个函数,而是一个对象,无论执行的fn返回什么。
因此,目前将行动定义为
PartnerDetail.load
只需使用带闭包的函数文字。。。
MapMarker.bindClickEvent(marker, (function (i) {
return function () {
PartnerDetail.load(i)
}
})(id)
);
这将在i参数上创建一个闭包,该参数是对id的引用。传递给事件侦听器的对象是一个函数,该函数将在执行时加载id。
您不需要操作变量。
您也可以将其隐藏在bindClickEvent对象中。。。
var MapMarker = (function ($) {
bindClickEvent = function (marker, action, id) {
google.maps.event.addListener(marker, 'click', (function(i){
return function(){
action(i)
}
})(id));
};
return {
bindClickEvent: bindClickEvent,
};
})(jQuery);
MapMarker.bindClickEvent(marker, PartnerDetail.load, id)
相关文章:
- 在javascript中传递onmouseenter事件上的onfocus
- 如何传递函数中的参数
- 在谷歌地图的addListener事件中传递函数
- 将参数传递给事件函数
- 在 .on('click') 事件处理程序中传递函数和函数参数
- 为什么在传递/公开事件发射器时需要包装我的事件发射器的 on 函数
- 将参数传递给事件触发器中的函数调用
- 将对象函数传递给事件侦听器 JavaScript
- 订阅事件时传递函数参数
- 如何将参数传递给事件处理程序函数并仍然使用'这'参考
- jQuery:将 $(this) 传递给命名函数事件处理程序
- 如何在JavaScript中将局部变量从函数传递到事件侦听器函数
- JavaScript闭包函数传递给事件监听器
- 将函数的返回值传递给事件处理程序
- 将参数传递给事件处理程序函数的最佳实践
- 我有一些麻烦传递一个事件到另一个函数在我的插件
- 在firefox中传递一个事件和一个变量给一个匿名函数
- 如何将触发"onclick"事件的元素的id传递给事件处理函数
- 如何将变量传递给事件侦听器函数
- 将带有参数的函数传递给事件处理程序