$('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
});
如何将数字 2 动态更改为变量 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
改用。