दिलचस्प पोस्ट
मेरा सिस्टम.न्यूमेरिक नेमस्पेस कहां है? कैसे जावा में 1200 से 1.2k के स्वरूपण के बारे में जाना एनएसएलॉग गलत एन्कोडिंग दबाने वाली "कभी भी प्रयोग नहीं किया जाता" और सी # में चेतावनियों को "असाइन नहीं किया जाता" PostgreSQL में प्रविष्टि प्रदर्शन को गति कैसे करें res.send पूर्ण पथ पथ स्प्रिंग इंजेक्ट वैल्यू को स्थिर क्षेत्र में कैसे बनायें Libstdc ++ को जोड़ना statically: किसी भी gotchas? सीएसएस चयनकर्ता में तारांकन (*) क्या करता है? PHP में स्ट्रिंग में घुंघराले ब्रेसिज़ मेरे Perl परीक्षण `एन्कोडिंग 'utf8'` के साथ क्यों विफल हो जाते हैं? कोण के रास्ते में तत्व फोकस सेट करें क्रॉस डोमेन एजेक्स अनुरोध को सक्षम करने के लिए फ़ायरफ़ॉक्स सेटिंग फास्ट और कॉम्पैक्ट ऑब्जेक्ट सीरियललाइज़ेशन में एनएटी विंडोज कंसोल पर आउटपुट यूनिकोड स्ट्रिंग कैसे करें

डी 3 में "क्लिक करें" ईवेंट प्रोग्राम को कैसे खोलें?

मैं उस तरह की कोशिश कर रहा हूं ( https://gist.github.com/1703994 पर भी):

<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?1.27.2"></script> <script type="text/javascript" src="http://mbostock.github.com/d3/d3.time.js?1.27.2"></script> <script type="text/javascript" src="js-libs/jquery-1.7.js"></script> <style> <!-- #test { width: 400px; height: 500px; } --> </style> </head> <body> <script type="text/javascript"> $(function() { var w = 600, h = 350; var vis = d3.select("#test").append("svg:svg") .attr("width", w) .attr("height", h) .append("svg:g") .attr("transform", "translate(" + w / 2 + "," + h / 2 + ")"); var g = vis.selectAll("g") .data([ { x:1 , y: 2} ]) .enter().append("svg:g"); g.append("svg:path") .attr("fill", "red") .attr("stroke", "red") .attr("stroke-width", "10") .attr("d", "M 100 350 l 150 -300") g.select("path") .on("click", function() { console.log("Hello"); }); // XXX: how to execute click programmaticaly? }) </script> <div id="test"></div> </body> </html> 

लेकिन काम नहीं करता

मुझे लगता है कि हम https://github.com/mbostock/d3/wiki/Internals#wiki-dispatch_on का उपयोग कर सकते हैं

लेकिन इसे कैसे करें?

वेब के समाधान से एकत्रित समाधान "डी 3 में "क्लिक करें" ईवेंट प्रोग्राम को कैसे खोलें?"

सुनिश्चित नहीं है कि क्यों, लेकिन jQuery और डी 3 के तरीके से एक विसंगति प्रतीत होता है जो एक jQuery प्रेरित क्लिक ईवेंट $("#some-d3-element").click() कारण बनता है। d3 तत्व पर प्रेषण न करने के लिए $("#some-d3-element").click()

एक वैकल्पिक हल:

 jQuery.fn.d3Click = function () { this.each(function (i, e) { var evt = new MouseEvent("click"); e.dispatchEvent(evt); }); }; 

और फिर इसे कॉल करें:

 $("#some-d3-element").d3Click(); 

बस पंजीकृत मान के लिए एक .on रूप में विधि पर कॉल करें (यानी आपका हैंडलर फ़ंक्शन), फिर उसके परिणाम को कॉल करें:

 g.select("path").on("click")(); 

यदि आपका हैंडलर बाउंड डेटा और / या इवेंट फ़ील्ड का उपयोग करता है, या यदि आपके पास एकाधिक इवेंट श्रोताओं को बाध्य किया गया है (जैसे "click.thing1" और "click.thing2"), यह थोड़ा और अधिक जटिल हो जाता है। उस स्थिति में, आप मानक DOM विधियों का उपयोग करते हुए शायद एक फर्जी घटना को फ़ायर करने में सर्वश्रेष्ठ हैं:

 var e = document.createEvent('UIEvents'); e.initUIEvent('click', true, true, /* ... */); g.select("path").node().dispatchEvent(e); 

यह काम। मैं पाई चार्ट का उपयोग कर रहा हूं, इसलिए मैं सभी "चयनित" पाई स्लाइस का चयन कर रहा हूं, और उनमें से प्रत्येक के लिए, संलग्न "क्लिक" कॉलबैक को पुनर्प्राप्त कर रहा हूं (जो मैंने कोड के दूसरे भाग में संलग्न किया है, इसमें डी 3 का उपयोग नहीं किया गया है पर () विधि) और फिर सही संदर्भ में अपेक्षित मापदंडों के साथ लागू।

 d3.selectAll("g.selected").each(function(d, i) { var onClickFunc = d3.select(this).on("click"); onClickFunc.apply(this, [d, i]); }); 

मैं इस थ्रेड को कोणीय इकाई परीक्षण के लिए डी 3 माउसमोव इवेंट की तलाश में आया था।

@natevw उत्तर

 g.select("path").on("click")(); 

माउसओवर घटना पर बहुत मदद की। लेकिन, आवेदन करने के लिए कि म्यूज़ेमॉव एक ईएसओआरएस रिक्त त्रुटि दे रहा था।

काम के आसपास d3 घटना प्रोग्राम को सेट करना था I

 d3.event = document.createEvent('MouseEvent'); d3.event.initMouseEvent("mousemove"); d3.select(elm[0]).select("rect").on("mousemove")(); 

उम्मीद है की यह मदद करेगा।

यह जवाब कुछ असंबद्ध हो सकता है – लेकिन उम्मीद है कि एसवीजी तत्व की एक क्लिक घटना को कैसे खोलें – jQuery $ (mySvgElement) .trigger ("क्लिक") के बाद से काम नहीं करेगा।

एसवीजी तत्व के लिए क्लिक कार्यक्रम को ट्रिगर / इन्हें खोलें / बढ़ाएंगे:

 var ev = document.createEvent("SVGEvents"); ev.initEvent("click",true,true); var target = $("svg>g>path[fill='#0011cc']").get(0); // get the SVG element here target.dispatchEvent(ev); // like $(target).trigger('click') - but working! 

आप माउस मैनुअल के माध्यम से सुपर मैनुअल जा सकते हैं और इसे तर्क दे सकते हैं कि डी 3 अन्यथा आपके लिए उपलब्ध कराएगा। यह आपको अभी भी डी 3 निर्माणों का उपयोग करते हुए इसे करने का एक बहुत साफ तरीका प्रदान करता है एक तत्व के लिए निम्न का उपयोग करें:

 var path = g.select('path'); path.on('click').call(path.node(), path.datum()); 

कई तत्वों के लिए, आप बदले में हर एक को ट्रिगर कर सकते हैं:

 g.selectAll('path').each(function(d, i) { d3.select(this).on('click').apply(this, arguments); }); 

उत्तरार्द्ध भी एक तत्व के लिए इस्तेमाल किया जा सकता है यदि आपके चयनकर्ता पर्याप्त विशिष्ट है, या यदि आप का उपयोग करते हैं। .select() बजाय। .selectAll() केवल पहले तत्व वापस करने के लिए।

डी 3 वी 4 के साथ आप यह चाहते हैं:

 d3.select('#some-id').dispatch('click'); 

रेफरी: https://github.com/d3/d3-selection#selection_dispatch

यह मेरा इसे करने का तरीका है।

 g.selectAll("path").on("click", function(d, i){ my_function(d, i); }); 

मैंने पाया है कि कॉलबैक अनाम कार्यों के साथ काम करते हैं। इसलिए ऊपर दिए गए कोड के लिए, किसी भी पथ को क्लिक किया गया है जो my_function को कॉल my_function और मौजूदा डेटम d और इंडेक्स i में क्लिक किया गया पथ के पास होगा।

मुझे अगला समाधान मिल रहा है:

 d3.selectAll("path").each(function(d, i) { onClickFunc.apply(this, [d, i]); }); 

जहां d डेटा है और i इस डेटा को सूचकित करता i

g.select("path").trigger("click") प्रयास करें g.select("path").trigger("click")