2012-08-03 28 views
8

Tengo un svg en mi aplicación. ComojQuery elemento SVG animado

<svg id="gt" height="450" width="300" xmlns="http://www.w3.org/2000/svg"> 
<image id="1_dice" x="0" y="420" height="30" width="30" xlink:href="images/1_coin.png" /> 
</svg> 

Obtuve un elemento svg llamado '1_dice'. En un botón HTML, haga clic en Me gustaría animar el elemento de acuerdo con los parámetros. Al igual que

$('#btn').click(function(){ 
    $('#1_dice').animate({'x':200},2000); 
}); 

He intentado esto pero esto no trabajando ...

+1

Si el DOCTYPE de la página no es HTML5, tenga en cuenta que los ID deben comenzar con una letra. – undefined

+0

gracias por la respuesta .. Mi DOCTYPE es También cambia el nombre a "los dados". Pero no funciona ... incluso $ ('# dice'). Hide(); esto está funcionando .. por favor ayuda – ramesh

+0

$ ('# dice'). hide(); - esto está funcionando ... pero animado no funciona – ramesh

Respuesta

6

jQuery animado es para la animación de los elementos HTML. Para SVG tienes que probar jQuery SVG plugin. Siga el enlace - http://keith-wood.name/svg.html

+1

Para ser más preciso, jQuery animado es para animar propiedades de CSS. Algunos CSS pueden aplicarse a elementos SVG, como opacidad, relleno, trazo. Consulte [este artículo] (http://www.smashingmagazine.com/2014/11/styling-and-animating-svgs-with-css/) para obtener alguna explicación. – Sygmoral

9

Es posible sin un complemento, pero se trata de un truco. El problema es que x no es una propiedad CSS sino un atributo, y jQuery.animate solo anima las propiedades CSS. Pero puede usar el parámetro step para especificar su propio comportamiento personalizado para la animación.

foo es una propiedad no existente cuyo valor de animación utilizamos en la función de paso.

$('#btn').click(function(){ 
    $('#dice_1').animate(
     {'foo':200}, 
     { 
      step: function(foo){ 
       $(this).attr('x', foo); 
      }, 
      duration: 2000 
     } 
    ); 
}); 
+0

Esto solo funciona si el valor que quiere dar es un número, porque la función de paso solo toma un número. –