2011-05-13 5 views
6

Tengo el siguiente script js para acceder a los elementos dentro de un objeto (SVG - <object data="bbbbbb.svg" type="image/svg+xml" id="alphasvg" width="100%" height="100%"></object> )contentDocument en jQuery

jQuery(document).ready(function($) { 

    $(window).load(function() { 


     var a = document.getElementById("alphasvg"); 
     var svgDoc = a.contentDocument; 
     var delta = svgDoc.getElementsByTagName("path");  
     $(delta).click(function() { 

      //do stuff 

     }) 

    }); 
}); 

quiero usar jQuery para acceder a los elementos y las etiquetas. Estoy completamente atrapado en la parte contentDocument. ¿Cómo puedo convertir esto a jQuery para poder usar attr, etc.?

Deseo poder acceder y modificar atributos en jQuery en lugar de tener que usar los métodos js tradicionales con los que no estoy familiarizado.

¿Cómo alguien puede ayudarme?

Gracias a un millón.

+0

¿Estás tratando para acceder a los valores de marco en línea? – ppumkin

Respuesta

4

Usted debe ser capaz de acceder a los caminos directamente como elementos, sin necesidad de contentDocument o getElementsByTagName, etc:

jQuery(document).ready(function($) { 

    $(window).load(function() { 

     $("#alphasvg path").click(function() { 

      //do stuff 
      // $(this).attr('d') = the path 

     }) 

    }); 
}); 
+0

esto es correcto, lo bueno de svg es que todos los elementos están accesibles a través del DOM – samccone

5

De esta manera:

$(svgDoc).find("whatever").doWhatever(); 

Demo here y code here. Tenga en cuenta que he usado un para la demostración, por lo tanto, la primera URL funcionará, la segunda le dará un error de "permiso denegado" si intenta ejecutar el violín.

+0

Todavía estaba recibiendo los mismos problemas de origen (http://stackoverflow.com/questions/2753732/how-to-access-svg-elements- with-javascript/3379830 # comment25937521_3379830) cuando ejecuté sin un servidor, entonces use un servidor, incluso solo para js y html del lado del cliente como en estos ejemplos. – Michael

2

Si está incrustando SVG en HTML usando la etiqueta del objeto (en contraposición a inline SVG), esto, entonces esto es un duplicado de una pregunta anterior, la respuesta a la que se puede encontrar aquí: How to access SVG elements with Javascript