Questo è iniziato come un commento sulla soluzione di RGB, ma non ho potuto inserirlo in modo da averlo convertito in una risposta. L'ispirazione per la quale è interamente RGB.
La soluzione RGB ha funzionato per me. Tuttavia ho voluto notare un paio di punti che possono aiutare gli altri che arrivano a questo post (come me) che non sono così familiari quale svg e che potrebbe benissimo aver generato il loro file svg da un pacchetto di grafica (come avevo fatto io).
Quindi, per applicare soluzioni di RGB che ho usato:
Il css
<style>
rect.btn {
stroke:#fff;
fill:#fff;
fill-opacity:0;
stroke-opacity:0;
}
</style>
Lo 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>
il codice HTML per codificare l'inserimento del vostro preesistente file in formato SVG nel tag di gruppo all'interno del codice 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>
Tuttavia nel mio caso ho diverse icone SVG che desidero di essere cliccabile e incorprating ciascuno di questi nel tag SVG stava iniziando a diventare ingombrante.
Quindi come approccio alternativo dove potrei utilizzare le classi ho usato jquery.svg. Questa è probabilmente una vergognosa applicazione di questo plugin che può fare ogni genere di cose con SVG. Ma ha funzionato utilizzando il seguente codice:
<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>
dove html
<div class="svgload" style="width: 10px; height: 10px;"></div>
Il vantaggio per il mio pensiero è che posso utilizzare la classe appropriata dove mai sono necessarie le icone ed evitare un bel po 'di codice nel corpo dell'html che aiuta la leggibilità. E ho solo bisogno di incorporare il file svg pre esistente una volta.
Modifica: Ecco una versione più netta della sceneggiatura per gentile concessione di Keith Wood: utilizzando l'impostazione URL di caricamento di .svg.
<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>
Questo non funziona. –