Ho un elenco di elementi in una pagina con un set di controlli a MoveUp, MoveDown e Delete.jQuery gestori di eventi non attivati in IE
I controlli si trovano nella parte superiore dell'elenco nascosto per impostazione predefinita. Come si mouseover una riga oggetto, seleziono i controlli con jQuery
//doc ready function:
..
var tools = $('#tools');
$('#moveup').click(MoveUp);
$('#movedn').click(MoveDn);
$('#delete').click(Delete);
..
$('li.item').mouseover(function(){
$(this).prepend(tools);
});
Questa grande opera in Firefox .. gli strumenti si muovono nella riga corrente, e gli eventi click chiamano le funzioni Ajax. Tuttavia, in IE6 e IE7 .. non si verifica alcun clic. Ho provato a disassociare il mouseout e rebindare su ogni mouseover ... inutilmente.
Ho anche esaminato varie ragioni al di fuori di javascript (ad esempio conflitti png trasparenti, z-index, posizione: assoluta) .. anche nessuna soluzione trovata.
Alla fine ho dovuto aggiungere una riga di strumenti a ciascun elemento e mostrare/nascondere il mouse sopra/fuori. Funziona altrettanto bene - l'unico aspetto negativo è che ho molto più markup "strumenti" sulla mia pagina.
Qualcuno sa perché IE ignora/elimina/uccide gli eventi del mouse una volta che gli oggetti vengono spostati (utilizzando antefatto)? E perché il riavvicinamento dell'evento anche in seguito non ha alcun effetto? Mi ha infastidito per quasi 2 ore prima che mi arrendessi.
Abbastanza corretto, come ho detto gli eventi sono persi. Ma perché non sarei in grado di aggiungere gli eventi ai nuovi oggetti? Inoltre, non voglio copiare gli oggetti, ma spostarli. Ancora una volta, se gli eventi sono persi, dovrei comunque essere in grado di re-legare. Inoltre, se gli eventi non sparano, penseresti che il link href sarebbe seguito .. questo non succede neanche .. Nulla accade A TUTTI. – misteraidan
È un limite/bug del DOM di IE e purtroppo, per ora devi solo conviverci se vuoi supportare IE. Per quanto riguarda lo spostamento dell'elemento, non è possibile spostarlo senza la clonazione o creare ciò che è chiamato riferimento circolare. Anche durante lo spostamento è necessario var cloned = $ ("# element"). Clone (true); $ ("# Elemento") rimuovere().; . $ ("NuovaDirectory") append (clonato); –
ok, quindi clone lo è! grazie mille. – misteraidan