将上下文(this)添加到Google地图请求中

时间:2015-11-29 21:29:51

标签: google-maps-api-3

我正在为网站开发此页面,该网站根据当前登录用户生成搜索结果。我的目标是遍历每个房子并为其分配一段距离。

我的问题是我似乎无法在距离矩阵请求/响应中使用上下文(this)。

$('.houseWrapper').each(function() { var origin = $(this).children('.houseMeta').attr('data-origin'); var destination = $(this).children('.houseMeta').attr('data-destination'); var service = new google.maps.DistanceMatrixService(); service.getDistanceMatrix({ origins: [origin], destinations: [destination], travelMode: google.maps.TravelMode.DRIVING, unitSystem: google.maps.UnitSystem.METRIC, avoidHighways: false, avoidTolls: false, }, callback); function callback(response, status) { if (status == google.maps.DistanceMatrixStatus.OK) { var origins = response.originAddresses; var destinations = response.destinationAddresses; for (var i = 0; i < origins.length; i++) { var results = response.rows[i].elements; for (var j = 0; j < results.length; j++) { var element = results[j]; var distance = element.distance.text; var duration = element.duration.text; console.log($(this).html()); } } } } });

3 个答案:

答案 0 :(得分:1)

尝试:

var that = this;
var origin = $(this).children('.houseMeta').attr('data-origin');
....

然后:

console.log($(that).html());

答案 1 :(得分:0)

我会做#34;这个&#34;作为函数的参数传入,类似于部分函数的工作方式。

var callback = function(this) {
    return function(response, status) {
        // ...
    }
}(this);

答案 2 :(得分:0)

有两个参数将传递给$.each() - 回调,元素的索引和元素。

只需使用这些参数:

$('.houseWrapper').each(function(index,node) {
   //somewhere
   console.log($(node).html());
});