$('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?谢谢任何帮助。
$('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
});
不要使用 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]);
});
不要使用 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]);
});
为了在函数名称中使用动态名称,您可以使用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]());
});
我认为编写一个带有开关的新函数会更容易。我不建议使用eval。
$('a').live('click',function(e){
e.preventDefault();
var id = $(this).attr('id');
infowindow2.open(map, eval('marker' + id));
});
注释:
eval
已过时,您应该寻找更好的设计。live
也是如此... 您应该使用on
代替。