2013-02-19 14 views
18

Alle Lösungen, die ich finden konnte schlägt vor, .live() Methode zu verwenden. Aber ab heute ist es veraltet.Wie bindet man .hover() an dynamisch erzeugte "li" -Elemente?

.hover() funktioniert perfekt auf "li" -Elemente, die nicht dynamisch erstellt werden. Aber sobald ich neue "li" anhängen, wird überhaupt nicht ausgelöst.

Jeder hat das herausgefunden?

Antwort

34

Das Ereignis "Hover" wurde mit delegierter Ereignisbehandlung wie .on() per .on() jQuery doc pages veraltet.

Stattdessen müssen Sie .on() delegierte Ereignisbehandlung mit Mouseenter und Mouselave und einen Event-Handler für jede.

Zum Beispiel:

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

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

In Ihrem echten Code, würden wählen Sie ein statisches übergeordnetes Objekt, das viel näher an die dynamischen li Tags als das document Objekt für eine bessere Leistung.

+0

Also, ich glaube, es bestätigt nur, was ich vermutet habe :(Danke für Ihre schnelle und direkte Antwort. –

0

Verwenden JQuery On Try this:

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

}); 
+2

Dies gibt Ihnen nur eine Funktion und ist seit jQuery 1.8 veraltet. – jfriend00

0

dieses Versuchen

Edit: Sry das deprecated Ereignis verpasst

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

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

fiddle

+0

Dies gibt Ihnen nur eine Funktion und wurde ab jQuery 1.8 als veraltet eingestuft. – jfriend00

Verwandte Themen