Ho un bug di IE che non sono sicuro di come risolvere.IE7 e 8 non vengono attivati jQuery eventi di clic per gli elementi aggiunti all'interno di una tabella
Uso di jQuery Muovere dinamicamente un menu per apparire su un elemento al passaggio del mouse.
Il mio codice (semplificato) simile a questa:
$j = jQuery.noConflict();
$j(document).ready(function()
{
//do something on the menu clicks
$j('div.ico').click(function() { alert($j(this).parent().html()); });
setUpActions('#tableId', '#menuId');
});
//on mouseover set up the actions menu to appear on mouseover
function setUpActions(tableSelector, menuSelector)
{
$j(tableSelector + ' div.test').mouseover(function()
{
//note that append will move the underlying
//DOM element with all events from it's old
//parent to the end of this one.
$j(this).append($j(menuSelector).show());
});
}
Questo menu non sembra registrare gli eventi in modo corretto per il menu dopo che è stato spostato in IE7, IE8 e IE8-as-IE7 (yeah MS, questo è davvero un "nuovo motore di rendering" in IE8, vi crediamo tutti).
Funziona come previsto in tutto il resto.
È possibile visualizzare il comportamento in a basic demo here.
Nella demo si possono vedere due esempi della questione:
- L'immagine dietro i pulsanti dovrebbe cambiare al passaggio del mouse (fatto con i CSS: selettore hover). Funziona sul primo mouseover ma poi persiste.
- L'evento click non viene attivato, tuttavia con gli strumenti dev è possibile chiamarlo manualmente ed è ancora registrato.
Si può vedere (2) in strumenti di sviluppo di IE8:
- aperto page in IE8
- strumenti Open dev
- Selezionare "Script" linguetta e "Console" sotto-scheda
- Tipo:
$j('#testFloat div.ico:first').click()
per chiamare manualmente qualsiasi evento sottoscritto - Ci sarà un avviso nella pagina
Ciò significa che sono non perdere le sottoscrizioni degli eventi, sono ancora lì, IE non li chiama semplicemente quando faccio clic.
Qualcuno sa perché questo errore si verifica (oltre che solo per il motore venerabile di IE)?
C'è una soluzione?
Potrebbe essere qualcosa che sto sbagliando che semplicemente funziona come previsto in tutto il resto?
Bel trucco: funziona! Nonostante 'hover' sia originariamente un'estensione IE, penso che accetterò semplicemente che non funziona qui. Saluti! – Keith