2012-12-06 154 views
0

我使用gmap3 jQuery插件呈現Google Maps標記。 我通過點擊菜單鏈接觸發標記彈出窗口,這些菜單鏈接基於標記ID,可以使用此插件進行設置。jQuery和動態ID

標記獲取與此代碼ID(緯度/長,彈出的文本旁邊):

{latLng:[46.055221,14.504265], data:"some text", id:"map-1"} 

標記都會觸發彈出窗口與此jQuery代碼:

$('#maptrigger-1').live('click',function(){ 
    var marker = $('#googlemap').gmap3({ get: { id: 'map-1' } }); 
    google.maps.event.trigger(marker, 'click'); 
}); 

和HTML代碼:

<a href="#" id="maptrigger-1">click</a> 

我不想爲每個標記/ ID重複jQuery代碼(map-1/maptrigger-1,map2/maptrigger2,map3/maptri gger3),但迄今爲止我還沒有成功。

任何幫助,將不勝感激。

回答

2

使用attribute starts with selector

$('[id^="maptrigger"]').live('click',function(){ 

,更好地連接使用.on().live()已被棄用的jQuery 1.7.0

$('[id^="maptrigger"]').on('click',function(){ 
+3

'live'已被棄用。 –

+0

@ DanielA.White奇怪的......我以爲它只是被取代,並沒有被棄用。 –

+0

@JanDvorak閱讀文檔http://api.jquery.com/live/'從jQuery 1.7開始,.live()方法已被棄用。使用.on()附加事件處理程序。老版本jQuery的用戶應該優先使用.delegate(),而不是.live()。' –

5

事件你應該把一個類的點擊元素

<a href="#" id="maptrigger-1" class="trigger">click</a> 

並使用

$('someParentOfAll.triggerElements').on('click','.trigger', function(){ 
    var mapid = 'map-' + this.id.split('-')[1], 
     marker = $('#googlemap').gmap3({ get: { id: mapid } }); 

    google.maps.event.trigger(marker, 'click'); 
});