के साथ काम नहीं करती है मेरे पास तत्वों का एक घोंसला सेट (एसवीजी) है। मूल तत्व ग्राफ है, और बच्चे ग्राफ (रेखाएं, अक्ष, आदि) में तत्व हैं। सरलीकृत उदाहरण:d3.on ("mouseover") घटना नेस्टेड एसवीजी तत्वों
<g transform="translate(80,10)" id="mainGraph">
<g class="Line">
<path d="....."></path>
</g>
</g>
मेरे समस्या यह है कि अगर मैं mainGraph तत्व के लिए माउसओवर/MouseMove घटना बाँध (उदाहरण के लिए D3.on ("माउसओवर") के साथ), यह केवल चलाता है अगर मैं एक से अधिक माउस ले जाते है बाल तत्वों का।
मैंने जो कुछ पढ़ा है, उनमें से एक यह है कि बाद के तत्वों की प्राथमिकता है, इसलिए मैंने सभी बाल तत्वों के लिए स्टाइल ("पॉइंटर-इवेंट्स", "कोई नहीं") जोड़ा, लेकिन यह काम नहीं किया।
something.append('svg:rect')
.attr('width', width) // the whole width of g/svg
.attr('height', height) // the whole heigh of g/svg
.attr('fill', 'none')
.attr('pointer-events', 'all')
.on('mouseover', function() {
// do something
}
});
मैं (अपने उदाहरण में mainGraph) का मानना है <g>
तत्व:
'g' का उपयोग करता है, तो आप उसके आयाम स्पष्ट रूप से सेट करने के लिए काम करना चाहिए सीएसएस संपत्ति जोड़ना है। –
ए 'जी' तत्व ('div' के विपरीत) सिर्फ एक आकारहीन कंटेनर है, और इसमें कोई आयाम नहीं है। इसलिए, यदि आप माउसओवर को आयताकार क्षेत्र पर लागू करना चाहते हैं, तो आपको आयताकार सामग्री जैसे कि 'rect' निर्दिष्ट करना होगा। हालांकि, एक उपयोगी परिष्करण भरने का उपयोग कर रहा है: कोई भी और सूचक-घटनाओं: सभी शैलियों। – mbostock
@mbostock क्या यह सूचकांक पर सीधे पॉइंटर-इवेंट का उपयोग करते हुए इसे अपने सीएसएस गुणों में सेट करने में कोई फर्क पड़ता है? क्या '' 'g''' के अंदर' '' path''' तत्व समान व्यवहार करता है? – amenadiel