2012-09-11 93 views
3

我需要一個事件偵聽器等待點擊。不幸的是,與InfoWindows的工作似乎並沒有在這裏工作的方式......谷歌地圖API - 事件偵聽器InfoBubble不起作用

好了,這裏是我的InfoBubble

var infoBubble = new InfoBubble({ 
     map: map, 
     content: $('#my-div').html(), 
     position: new google.maps.LatLng(areas[area].lat, areas[area].lng), 
     shadowStyle: 1, 
     padding: 0, 
     borderRadius: 0, 
     arrowSize: 10, 
     borderWidth: 1, 
     borderColor: '#ccc', 
     disableAutoPan: true, 
     hideCloseButton: true, 
     arrowPosition: 15, 
     arrowStyle: 0 
    }); 

這是我的聽衆:

google.maps.event.addListener(infoBubble, 'click', function(){ 

     console.log("noodle"); 
    }); 

BTW,有沒有錯誤報告由Firebug。

回答

6

試試這個:

$(infoBubble.bubble_).live("click", function() { 
    console.log('clicked!'); 
}); 
1
google.maps.event.addDomListener(infoBubble.bubble_, 'click', function() { 
    alert("Ooo..!"); 
}); 

它的工作原理!

2

如果您使用InfoBubble的編譯版本中,.bubble_基準丟失。你必須找到.bubble_已經變成了什麼。 如果您還沒有編譯你自己和你已經使用所提供的編譯版本中,.bubble_引用.E。 例子:

$(infoBubble.e).find("#yourdiv").live("click",function(event) { 
    console.log(event.target.id); 
}); 
+0

'$(infoBubble.e)。在( 「點擊」,功能(E){})'在版本的Works生活已貶值的jQuery。 –

1

要在@Marius的回答進一步提高,以及更新的jQuery的最新版本(因爲我可以看到OP有jQuery的可用),請嘗試以下爲目標的您infoBubble中單擊特定元素的事件:

$(infoBubble.bubble_).on("click", "button.close", function() { 
    console.log("Button with class .close clicked."); 
}); 

如果您需要將數據傳遞到你的函數,一個選擇是使用數據 - *屬性和抓住它通過事件目標如下:

例JS爲您InfoBubble內容:

var myVariable = 10; 
var infoBubbleContentString = '<span class="my-style" data-id="' + myVariable + '">Button text</span>'; 

事件處理程序:

$(infoBubble.bubble_).on("click", ".my-style", function (e) { 
    if ($(e.target).data('id')) { 
     var myVariableValue = $(e.target).data('id'); // myVariableValue will equal 10 
    } 
}); 
相關問題