jQuery和动态ID

时间:2012-12-06 16:24:02

标签: javascript jquery google-maps

我正在使用gmap3 jQuery插件渲染Google Maps标记。 我正在触发标记弹出窗口,点击基于标记ID的菜单链接,我可以使用此插件设置。

Marker使用以下代码获取ID(在lat / long和popup文本旁边):

{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(map-1 / maptrigger-1,map2 / maptrigger2,map3 / maptrigger3)重复jQuery代码,但到目前为止我还没有成功。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分: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'); 
});

答案 1 :(得分:2)

使用 attribute starts with selector

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

最好使用.on()作为.live()附加事件,自jQuery 1.7.0起已被弃用

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