通过 jQuery 触发器传递对象

3

我尝试做一些相当简单的事情,但是结果却很奇怪。我有一个事件触发器,用于传递JSON对象,但是当它到达另一端时,它变成了一个函数……我警示结果,并显示如下:

警示字符串示例:

alert('value of lattitude? ' + map.currentLatLng.lat);

结果:

纬度的值?function () {return this[a];}

我尝试使用数组文字包装器来设置触发器,也尝试了不使用它:

$('body').trigger('updateLocation', [{lat:38.905003, lng:-77.066497}]);
$('body').trigger('updateLocation', {lat:38.905003, lng:-77.066497});

我做错了什么?


你正在使用Google Maps API吗?哪个版本?jQuery没有updateLocation事件,所以我怀疑它不知道如何触发一个,除非它是你定义的自定义事件类型。 - Matt Ball
1个回答

14

试试这个:

$('body').bind('updateLocation',function(event,obj){
    alert(obj.lng);
});

$('body').trigger('updateLocation', [{lat:38.905003,lng:-77.066497}]);


1
这在不同情况下表现极不一致,我刚刚使用了这个解决方案来解决相同的问题,但是在同一个项目中,我已经有很多通过触发器传递完整对象而没有错误的示例,为什么这次需要任意地将其包装为数组以防止意外行为? - Dom Vinyard
将其封装在数组中可行是因为这是传递多个参数并保持每个参数类型的方法,而且由于只有一个参数,因此它将作为默认值返回,同时其类型也被保留。对我来说一开始也不太清楚。 - StephenRios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接