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

Don't use eval, use a hash:

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

Instead of using eval, - better change you data structures:

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 should always be the last option

In order use dynamic name in a function names you can windows object.

Here is an Example:

var id = '2';
function map2() {
    alert('me called');
}
window["map"+id]();

Demo

Your Usage would be something like this

$('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は非推奨です。より良い設計を探す必要があります。
  • so as live...on代わりに使用する必要があります。
于 2012-04-06T10:55:05.427 に答える