2012-10-21 81 views
3

我想給爲鼠標懸停事件而不是上的標記點擊做做一些其他東西(如FUNC)當它看到一個彈出點擊單張不同的懸停和點擊事件

我成功了一半代碼,我不相信會幫助你覺得在這個方向:

(我簡單地添加上click事件的懸停)

marker[i].on('mouseover', marker[i].bindPopup('hi').openPopup.bind(marker[i])); 

[I]簡單地表示爲一個循環


傳單的API:http://leaflet.cloudmade.com/reference.html#map-openpopup

回答

10

下面的代碼顯示了當標記位於鼠標在彈出菜單和做別的東西點擊標記時:

marker[i].on('mouseover', function(evt) { 
    //evt.target is the marker that is being moused over 
    //bindPopup() does not need to be called here if it was already called 
    //somewhere else for this marker. 
    evt.target.bindPopup('hi').openPopup(); 
}); 
marker[i].on('click', function(evt) { 
    //again, evt.target will contain the marker that was clicked 
    console.log('you clicked a marker'); 
}); 
+0

我一直在使用單張版本0.7很久,代碼: 'marker [i] .bindPopup('hi')。openPopup.bind(marker [i]) 工作的很好。但現在的版本1B,如果我使用,它會觸發一個錯誤給瀏覽器控制檯: _Cannot讀取屬性null._ 的「LAT」但現在,我使用你的解決方案: 'e.target。 openPopup()' 做的工作就好(是的,我聲明bindPopup別的地方)。 –

1

你是不爲mouseover事件提供回調。

marker[i].on('mouseover', function() { 
    marker[i].bindPopup('hi').openPopup.bind(marker[i]) 
}); 

傳遞一個匿名函數作爲回調,當調用它會做你想要什麼。

我對小冊子api不太瞭解(幾個月前剛剛開始使用它),因此也可能存在與marker[i].bindPopup('hi').openPopup.bind(marker[i])有關的問題。

+0

感謝@馬克但這是不正確的。你會看到當我有一個'marker [i] .bindPopup('hi22')。openPopup.bind(marker [i])時,鼠標將被綁定一個hi22文本。 'marker [i] .on('click',alert('hi22'));'也一樣。最後我的回調不需要一個函數來工作。 – Diolor

相關問題