3
$('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 ?

谢谢你的帮助

4

5 回答 5

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]);
});
于 2012-04-06T11:00:28.067 回答
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]);
});
于 2012-04-06T11:00:21.337 回答
0

EVAL 应该永远是最后的选择

为了在函数名称中使用动态名称,您可以使用 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]()); 
});
于 2012-04-06T11:01:14.280 回答
0

我认为用开关编写新功能会更容易。我不推荐使用 eval。

于 2012-04-06T11:01:17.687 回答
-2
$('a').live('click',function(e){
    e.preventDefault();
    var id = $(this).attr('id');
    infowindow2.open(map, eval('marker' + id)); 
});

现场演示

笔记:

  • eval已弃用,您应该寻找更好的设计。
  • 所以live......你应该on改用。
于 2012-04-06T10:55:05.427 回答