2014-12-03 7 views
14

मैं अपने पत्रक मार्करों के लिए कस्टम divIcons का उपयोग कर रहा हूँ। मैं कुछ सरल सीएसएस के साथ एक सीमा जोड़ने के लिए जो कुछ भी मार्कर मैं पर क्लिक करना चाहते हैं:आप एक पत्रक मार्कर में कक्षा कैसे जोड़ते हैं?

.selectedMarker { 
border: 10px solid gold; 
} 

हालांकि, jQuery के साथ निम्न काम नहीं करता:

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

तब मैं पत्रक के स्वयं के उपयोग करने का प्रयास addClass() method। मैंने इसे निम्नलिखित तरीकों से उपयोग करने का प्रयास किया:

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

इनमें से कोई भी काम नहीं। मैं अपने मार्कर में चयनित मार्कर क्लास कैसे जोड़ूं?

+0

$ (मार्कर) क्या है? – Cattla

+0

jQuery। जो काम नहीं करता है, क्योंकि jQuery ने डीओएम तत्वों को लक्षित किया है, जावास्क्रिप्ट ऑब्जेक्ट्स नहीं। – ohyeah

उत्तर

15

मैं

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

साथ मार्कर के एक वर्ग को जोड़ने के द्वारा यह किया है और उसके बाद jQuery का उपयोग किए बिना सीएसएस

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

महान काम करता है, धन्यवाद! – ohyeah

8

उपयोग करते हैं,

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

इस काम की पुष्टि की, धन्यवाद। मुझे लगता है कि यह करने के लिए यह सबसे अच्छा तरीका है। दुर्भाग्य से 'क्लासलिस्ट' तब तक अनिर्धारित रहता है जब तक उपयोगकर्ता इसे क्लिक नहीं करता है, इसलिए इस विधि के साथ इसे बनाने के बाद कक्षा को सही नहीं जोड़ा जा सकता है। साथ ही, लीफलेट मार्करक्लस्टर का उपयोग करने वालों के लिए टिप करें, यह 'event.layer._icon' में है। – dtgq

9

1,0 और 0.7 में आप DOM तत्व से कक्षाओं को निकालने के लिए L.DomUtil का उपयोग कर सकते हैं:

L.DomUtil.addClass(marker._icon, 'className'); 
L.DomUtil.removeClass(marker._icon, 'className'); 
संबंधित मुद्दे