我正在为网站开发此页面,该网站根据当前登录用户生成搜索结果。我的目标是遍历每个房子并为其分配一段距离。
我的问题是我似乎无法在距离矩阵请求/响应中使用上下文(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());
}
}
}
}
});
答案 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());
});