这是我代码的一部分。
但是在控制台中出现了:
未捕获的TypeError:无法读取未定义的属性“title”
我不知道为什么alert(data[index].title);
没有出现。
那么,我该怎么做呢?
var data = [];
var api = function () {
clear_overlays();
var url = 'http://tw.tranews.com/map/dStores.asp?x1=' + bounds.x1 + '&x2=' + bounds.x2 + '&y1=' + bounds.y1 + '&y2=' + bounds.y2;
$.get('proxy.php', {url: url}, function (resp) {
var near = $('.near');
near.empty();
var xml = $(resp);
var data = xml.find('m');
$.map(data, function (obj, i) {
var m = $(obj);
var latlng = new google.maps.LatLng(m.find('vLat').text(), m.find('vLng').text());
var title = m.find('vName').text();
var markerOptions = {
map: map,
position: latlng,
title: title
};
var marker = new google.maps.Marker(markerOptions);
markers.push(marker);
marker.setMap(map);
var store = {
image: m.find('vImg1').text(),
title: m.find('vName').text()
};
data.push(store);
var image = m.find('vImg1').text();
var html = '<div class="perview"><a href="#"><img src="'+image+'" width="50" height="50" alt="'+title+'" /></a></div>';
$(html).appendTo(near);
});
$('.perview').on("click", "img", function(){
var index = $('.preview img').index(this);
alert(data[index].title);
/*var msg = '<div class="preview">' + $(this).attr('alt') + '</div>';
$('.info_content').animate({opacity: 1}, 300, function () {
$('.info').hide().empty().append(msg).delay(300).fadeIn(500);
});*/
});
}, 'XML');
};
答案 0 :(得分:1)
$('.perview').on("click", "img", function(){
var index = $('.preview img').index(this);
可能是问题,因为perview
不是preview
。如果元素不在集合中,.index
将返回-1
,这不能作为数组的索引。我不知道你的标记,但你应该重命名这个或那个。