2010-10-29 20 views
14

Estoy usando SVG junto con jQuery en mi aplicación Mvc. Dibujé una serie de rectángulos en mi página y lo que me gustaría hacer es adjuntar un evento de clic o mouseover para cada rectángulo, por ejemplo, abrir un cuadro de alerta. He intentado algo como esto, hasta el momento:Haga clic en evento para el rectángulo SVG

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

y

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

Pero, lamentablemente ninguno de estos eventos realmente trabajado para este control. ¿Alguien sabe cómo hacer esto?

EDIT:

estoy añadiendo el código JavaScript que estoy usando a continuación:

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

Los rectángulos están cargados de una imagen SVG.

Respuesta

15

El código para agregar el controlador click tiene que ser parte de la función onLoad - con ese cambio it works for me.

+1

Gracias Robert, después de intentar escribir como sugirió, ¡funcionó! ¡Muchas gracias! – Hallaghan

+0

Para otros, estaba luchando con un evento de clic móvil y funciona con '$ (documento) .on ('clic en contacto', '.button', función() {...});' –

+0

Discriminación contra triángulos que es. – geotheory

2

Prueba esto:

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

Tampoco funcionó, Ken. Agradezco la ayuda sin embargo. El control se procesó así: Hallaghan

+0

@Hallaghan, parece funcionar aquí: http: //jsfiddle.net/YcV3c/. –

+0

Ahora, eso es bastante extraño. Usando Firebug, noté que cuando estoy cargando la página, ingresa el evento click correctamente. Pero al hacer clic en el rectángulo, nada sucede realmente y el evento nunca se dispara. ¿Tienes alguna pista? EDITAR: Si quieres ver mi código de jquery o conocer los detalles de mis archivos, los agregaré a mi comentario. – Hallaghan

Cuestiones relacionadas