Ho un elemento <button>
all'interno del quale ho 2 elementi <span>
. Ho 2 gestori di eventi click jquery collegati per ciascuno degli elementi span in modo da poter fare quello che mi piace per ogni clic. Ecco un rapido sguardo del codice di base:jQuery evento che bolle sul pulsante non funziona come previsto in Firefox
HTML
<button>
<span>Text1</span>
<span>Text2</span>
</button>
Javascript
$(function() {
$('button').bind('click', function() {
console.log('button clicked');
});
$('button > span:eq(0)').bind('click', function() {
console.log('text1 span clicked');
});
$('button > span:eq(1)').bind('click', function() {
console.log('text2 span clicked');
});
});
Questo è tutto lavorare bene in Chrome e l'evento click viene catturata nell'ordine corretto : prima su uno qualsiasi degli elementi span e quindi l'evento bolle fino all'elemento del pulsante parent.
Il problema è che in Firefox l'evento click non viene attivato per nessuno degli elementi span, solo il gestore eventi pulsante registra l'evento come se fosse stato attivato.
Ecco un violino in modo da poter vedere quello che voglio dire: http://jsfiddle.net/spider/RGL7a/2/
Grazie
Immagino che questo non sia mai stato risolto? – Shane
@Shane Sfortunatamente no e da quello che ho visto potrebbe non esserlo mai, in quanto non funziona ancora nell'ultima versione di Firefox. I framework come Bootstrap lo fanno usando [due pulsanti separati] (http://getboototrap.com/components/#btn-dropdowns-split). E altri framework come Foundation o YUI usano semplicemente altri markup del tutto per simulare questa funzionalità ** split button ** ([Foundation Example] (http://foundation.zurb.com/docs/components/split_buttons.html) e [Esempio YUI ] (http://yuilibrary.com/yui/docs/node-menunav/node-menunav-4.html)). – Bogdan
Di solito uso Boostrap per questo tipo di funzionalità e, laddove non è un'opzione, uso la loro strategia in quanto sembra la migliore in termini di markup semantico. – Bogdan