我在页面上有50个点,每个人都有div。当我单击一个时,我想使用ID从数组中提取值。我可以获取ID,但是我无法使用该值从我的数组中获取内容。也许全局变量问题?不确定。甚至不确定这是否是处理访问多个数据的多次点击的最佳方式。任何帮助表示赞赏!
var location0 = {"name" : "Location 1", "image" : "image1.jpg"};
$('.dot').click(function(){
var thisLocation = $(this).attr("id");
alert(thisLocation); //Returns "location0"
alert(thisLocation["image"]); //Returns "undefined"
});
答案 0 :(得分:5)
我会这样做:
var locations = {
location1 : {"name" : "Location 1", "image" : "image1.jpg"},
location2 : {"name" : "Location 2", "image" : "image2.jpg"}
}
$('.dot').click(function(){
alert(locations[this.id].name);
});
答案 1 :(得分:2)
$(this).attr("id")
返回字符串"location0"
。如果要使用它,则必须获得实际的location0
变量,因此必须使用eval()
函数替换其中一个代码行。像这样:
var thisLocation = eval($(this).attr("id"));
我建议使用新的数组,其中"location0"
是关键字,然后您只需要使用locations["location0"]
之类的字符串访问密钥,并避免使用eval()
。
答案 2 :(得分:0)
您需要像这样访问它:
var test = {
location0: {"name" : "Location 1", "image" : "image1.jpg"}
};
$('.dot').click(function(){
var thisLocation = $(this).attr("id");
alert(thisLocation); //Returns "location0"
alert(test[thisLocation]["image"]); //Returns "undefined"
});
编辑:此作品
同样,它首先不适合你的原因是因为thisLocation是一个字符串,而不是它自己的对象,所以你需要使用括号通过传递名称来访问对象属性。我只是不建议