2014-12-03 14 views
14

Uso le divisioni personalizzate per i miei indicatori di Leaflet. Voglio aggiungere un bordo a qualsiasi marcatore clicco su, con qualche semplice CSS:Come si aggiunge una classe a un marker Leaflet?

.selectedMarker { 
border: 10px solid gold; 
} 

Tuttavia, quanto segue con jQuery non funziona:

$(marker).addClass('selectedMarker'); 

Poi ho provato ad usare Depliant propria addClass() method. Ho provato a chiamare usarlo nei seguenti modi:

marker.addClass('selectedMarker'); 
L.addClass(marker, 'selectedMarker'); 
addClass(marker, 'selectedMarker'); 
DomUtil.addClass(marker, 'selectedMarker'); 

Nessuno di questi lavori. Come posso aggiungere la classe SelectedMarker al mio marcatore?

+0

qual è il $ (marker)? – Cattla

+0

jQuery. Il che non funziona, poiché jQuery bersaglia gli elementi DOM, non gli oggetti JavaScript. – ohyeah

risposta

15

Io l'ho fatto con l'aggiunta di una classe per il marcatore con

var marker = L.marker(loc); 
marker.on('click', function() { 
    $(marker._icon).addClass('selectedMarker'); 
} 

e quindi utilizzare il css

.leaflet-marker-icon.selectedMarker{ 
    //your css 
} 
+0

Funziona alla grande, grazie! – ohyeah

8

senza l'utilizzo di jQuery,

marker._icon.classList.add("className"); 
+0

Confermato che funziona, grazie. Questo è il miglior metodo per farlo credo. Sfortunatamente 'classList' rimane indefinito finché l'utente non fa clic, quindi non può aggiungere una classe dopo averlo creato con questo metodo. Inoltre, suggerimento per chi usa markercluster opuscolo, è in 'event.layer._icon'. – dtgq

9

In 1.0 e 0.7 è possibile utilizzare L.DomUtil per aggiungere le classi di rimozione da un elemento DOM:

L.DomUtil.addClass(marker._icon, 'className'); 
L.DomUtil.removeClass(marker._icon, 'className'); 
Problemi correlati