Esto comenzó como un comentario sobre la solución de RGB pero no pude adaptarlo, por lo que lo he convertido en una respuesta. La inspiración de la cual es completamente RGB.
La solución RGB funcionó para mí. Sin embargo, quería señalar un par de puntos que pueden ayudar a otros que llegan a este post (como yo) que no son tan familiares que svg y que bien pueden haber generado su archivo svg a partir de un paquete de gráficos (como yo lo hice).
Así que para aplicar soluciones de RGB utilicé:
El css
<style>
rect.btn {
stroke:#fff;
fill:#fff;
fill-opacity:0;
stroke-opacity:0;
}
</style>
El script jQuery
<script type="text/javascript" src="../_public/_jquery/jquery-1.7.1.js"></script>
<script type="text/javascript">
$("document").ready(function(){
$(".btn").bind("click", function(event){alert("clicked svg")});
});
</script>
el código HTML para codificar la inclusión de su archivo SVG preexistente en el etiqueta de grupo dentro del código svg.
<div>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<g>
<image x="0" y="0" width="10" height="10"
xlink:href="../_public/_icons/booked.svg" width="10px"/>
<rect class="btn" x="0" y="0" width="10" height="10"/>
</g>
</svg>
</div>
Sin embargo, en mi caso tengo varios iconos SVG que deseo se pueda hacer clic y incorprating cada uno de estos en la etiqueta SVG estaba empezando a ser engorroso.
Así que como un enfoque alternativo donde podría emplear Clases, utilicé jquery.svg. Esta es probablemente una aplicación vergonzosa de este complemento que puede hacer todo tipo de cosas con SVG. Pero funcionó usando el siguiente código:
<script type="text/javascript" src="../_public/_jquery/jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery.svg.min.js"></script>
<script type="text/javascript">
$("document").ready(function(){
$(".svgload").bind("click", function(event){alert("clicked svg")});
for (var i=0; i < 99; i++) {
$(".svgload:eq(" + i + ")").svg({
onLoad: function(){
var svg = $(".svgload:eq(" + i + ")").svg('get');
svg.load("../_public/_icons/booked.svg", {addTo: true, changeSize: false});
},
settings: {}}
);
}
});
</script>
donde html
<div class="svgload" style="width: 10px; height: 10px;"></div>
La ventaja de mi pensamiento es que puedo usar la clase apropiada donde cada vez se necesitan los iconos y evitar un buen montón de código en el cuerpo del html que ayuda a la legibilidad. Y solo necesito incorporar el archivo svg preexistente una vez.
Editar: Aquí hay una versión más nítida del guión, cortesía de Keith Wood: utilizando .svg carga la configuración URL.
<script type="text/javascript" src="../_public/_jquery/jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery.svg.min.js"></script>
<script type="text/javascript">
$("document").ready(function(){
$('.svgload').on('click', function() {
alert('clicked svg new');
}).svg({loadURL: '../_public/_icons/booked.svg'});
});
</script>
Esto no funciona. –