2010-10-29 16 views
14

के लिए ईवेंट पर क्लिक करें मैं अपने एमवीसी एप्लिकेशन में jQuery के साथ एसवीजी का उपयोग कर रहा हूं। मैं अपने पृष्ठ पर आयताकारों की एक श्रृंखला खींचता हूं और मैं क्या करना चाहता हूं, प्रत्येक आयताकार के लिए एक क्लिक या माउसओवर ईवेंट संलग्न करता है, कहने के लिए, एक अलर्ट बॉक्स पॉपअप करें। मैं कुछ इस तरह की कोशिश की है, अब तक:एसवीजी आयताकार

$("rect[id='Y6']").attr('onclick', function() { alert("Hello!") }); 

और

$("rect[id='Y6']").live('click', function() {  
    alert("Hello!"); 
}; 

लेकिन इस घटनाओं की उदासी से कोई भी वास्तव में इस पर नियंत्रण के लिए काम किया। क्या कोई यह जानता है कि यह कैसे करें?

संपादित करें:

मैं जावास्क्रिप्ट कोड मैं नीचे का उपयोग कर रहा जोड़ रहा:

<script type="text/javascript"> 
    /*function resetSize(svg, width, height) { 
     svg.configure({ width: width || $(svg._container).width(), 
      height: height || $(svg._container).height() 
     }); 
    }*/ 
    function onLoad(svg, error) { 
     //svg.text(10, 20, error || 'Loaded into ' + this.id); 
     //resetSize(svg, null, null); //'100%', '100%'); 
    } 

    $(function() { 
     $('#layout').svg({}); 

     var svg = $('#layout').svg('get'); 
     svg.load('<%= Url.Action("Layout", new{ id = Model.Id }) %>', { //<%= Url.Content("~/media/svg/lion.xml") %>', { 
      addTo: false, 
      changeSize: false, 
      onLoad: onLoad 
     }); 
    });  

$('rect#Y6').click(function(){ 
    alert('hello'); 
}); 

</script> 

आयतों एक svg तस्वीर से लोड किए गए हैं।

उत्तर

15

आपका कोड जोड़ने के लिए click हैंडलर onLoad समारोह का हिस्सा बनने की जरूरत है - कि बदलाव it works for me साथ।

+1

धन्यवाद रॉबर्ट, जैसा कि आपने सुझाव दिया था लिखने की कोशिश करने के बाद, यह काम किया! आपका बहुत बहुत धन्यवाद! – Hallaghan

+0

दूसरों के लिए, मैं मोबाइल क्लिक ईवेंट से जूझ रहा था और यह '$ (दस्तावेज़) .on ('क्लिक टच', '.बटन', फ़ंक्शन() {...}) के साथ काम करता है;' –

+0

त्रिकोण के खिलाफ भेदभाव है। – geotheory

2

इस प्रयास करें:

$('rect#Y6').click(function(){ 
    alert('hello'); 
}); 
+0

यह या तो काम नहीं करता था, केन। हालांकि मैं मदद की सराहना करता हूं। इस तरह के नियंत्रण को प्रस्तुत किया गया था: Hallaghan

+0

@ हलाघन, ऐसा लगता है कि यह यहां काम करता है: http: //jsfiddle.net/YcV3c/। –

+0

अब, यह काफी अजीब है। फायरबग का उपयोग करके, मुझे पता है कि जब मैं पृष्ठ लोड कर रहा हूं, तो यह क्लिक ईवेंट को सही ढंग से दर्ज करता है। लेकिन आयताकार पर क्लिक करने पर, कुछ भी वास्तव में नहीं होता है और घटना को कभी नहीं निकाल दिया जाता है। क्या आपके पास कोई सुराग है? संपादित करें: यदि आप मेरा jquery कोड देखना चाहते हैं या मेरी फ़ाइलों के बारे में कोई जानकारी जानना चाहते हैं, तो मैं उन्हें अपनी टिप्पणी में जोड़ दूंगा। – Hallaghan