$('a').live('click',function(e){
e.preventDefault();
var id = $(this).attr('id');
infowindow2.open(map, marker2); // I need instead of 2 to print the value of variable id
});
如何将数字2动态更改为变量ID?
感谢您的帮助
答案 0 :(得分:10)
请勿使用eval
,请使用哈希:
var markers = {
"key1": function(){},
"key2": function(){},
"key3": function(){}
};
$('a').live('click',function(e){
e.preventDefault();
var id = this.id; //Use this.id instead of attr
infowindow2.open(map, markers[id]);
});
答案 1 :(得分:6)
而不是使用eval
, - 更好地改变数据结构:
var markers = {
'1': function () { doStuff(); },
'2': function () { doOtherStuff(); },
}
$('a').live('click',function(e){
e.preventDefault();
var id = $(this).attr('id');
infowindow2.open(map, markers[id]);
});
答案 2 :(得分:0)
为了在函数名中使用动态名称,可以使用windows对象。
这是一个例子:
var id = '2';
function map2() {
alert('me called');
}
window["map"+id]();
您的用法将是这样的
$('a').on('click',function(e){
e.preventDefault();
var id = $(this).attr('id');
infowindow2.open(map, window['map'+id]());
});
答案 3 :(得分:0)
我认为使用开关编写新功能会更容易。我建议不要使用eval。
答案 4 :(得分:-2)
$('a').live('click',function(e){
e.preventDefault();
var id = $(this).attr('id');
infowindow2.open(map, eval('marker' + id));
});
<强> LIVE DEMO 强>
备注:强>
eval
已被弃用,您应该寻找更好的设计。 live
...您应该使用on
代替。