2010-10-29 34 views
14

Tôi đang sử dụng SVG cùng với jQuery trong Ứng dụng Mvc của mình. Tôi vẽ một loạt các hình chữ nhật trên trang của tôi và những gì tôi muốn làm là đính kèm một nhấp chuột hoặc sự kiện di chuột qua cho mỗi hình chữ nhật, ví dụ, bật lên một hộp cảnh báo. Tôi đã thử một cái gì đó như thế này, cho đến nay:Nhấp vào sự kiện cho hình chữ nhật SVG

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

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

Nhưng thật đáng buồn không ai trong số các sự kiện này thực sự làm việc để kiểm soát này. Có ai biết cách làm điều này không?

EDIT:

tôi thêm mã javascript Tôi đang sử dụng dưới đây:

<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> 

Các hình chữ nhật được nạp từ một bức tranh svg.

Trả lời

15

Mã của bạn để thêm handler click cần phải là một phần của onLoad chức năng - với sự thay đổi đó it works for me.

+1

Cảm ơn Robert, sau khi cố gắng viết như bạn gợi ý, nó đã hoạt động! Cảm ơn rất nhiều! – Hallaghan

+0

Đối với những người khác, tôi đã đấu tranh với một sự kiện bấm di động và nó hoạt động với '$ (tài liệu) .on ('bấm vào', '.button', hàm() {...}); ' –

+0

Phân biệt đối xử với tam giác Là. – geotheory

2

Hãy thử điều này:

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

Nó cũng không hoạt động, Ken. Tôi đánh giá cao sự giúp đỡ mặc dù. Điều khiển được hiển thị như sau: Hallaghan

+0

@ Hallaghan, có vẻ như hoạt động ở đây: http: //jsfiddle.net/YcV3c/. –

+0

Bây giờ, điều đó khá lạ. Sử dụng firebug, tôi nhận thấy rằng khi tôi tải trang, nó sẽ nhập chính xác sự kiện nhấp chuột. Nhưng khi nhấp vào hình chữ nhật, không có gì thực sự xảy ra và sự kiện không bao giờ bị sa thải. Bạn có chút manh mối nào không? EDIT: Nếu bạn muốn xem mã jquery của tôi hoặc biết bất kỳ chi tiết về các tập tin của tôi, tôi sẽ thêm chúng trong bình luận của tôi. – Hallaghan

Các vấn đề liên quan