2013-02-19 13 views
18

Tutte le soluzioni che sono riuscito a trovare suggeriscono di utilizzare il metodo .live(). Ma ad oggi è deprecato.Come associare .hover() a "li" elmtent creato dinamicamente?

.hover() funziona perfettamente su elementi "li" non creati dinamicamente. Ma una volta aggiunto il nuovo "li", .hover() non viene attivato.

Qualcuno ha capito questo fuori?

risposta

34

L'evento "hover" è stato dichiarato obsoleto con la gestione degli eventi delegati come .on() per lo .on() jQuery doc pages.

Invece, è necessario utilizzare la gestione degli eventi delegata .on() con mouseenter e mouseleave e un gestore di eventi per ciascuno.

Ad esempio:

$(document).on("mouseenter", "li", function() { 
    // hover starts code here 
}); 

$(document).on("mouseleave", "li", function() { 
    // hover ends code here 
}); 

Nel codice vero e proprio, è necessario selezionare un oggetto principale statico che è molto più vicino alle dinamiche li tag che l'oggetto document per migliorare le prestazioni.

+0

Quindi, credo che confermi quello che ho sospettato :(Grazie per la tua risposta rapida e diretta. –

0

Usa JQuery On Prova questo:

$(document).on('hover', 'li', function() { 

}); 
+2

Questo fornisce solo una funzione ed è stato dichiarato obsoleto a partire da jQuery 1.8. – jfriend00

0

Prova questa

Edit: Sry mancato l'evento deprecato

$(document).on("mouseenter", "li", function(){ 
     //Your code 
}); 

http://api.jquery.com/live/

fiddle

+0

Questo ti dà solo una funzione ed è stata dichiarata deprecata da jQuery 1.8. – jfriend00

Problemi correlati