2011-01-09 4 views
1

Ich erstelle ein Plugin und bekam etwas Probleme:Wie man Ereignis zu dynamisch erzeugten Elementen in jquery-Plugin bindet?

im Falle:

ich eine Liste der un-Liste von Ajax erstellt haben geladen .such als:

<ul id='ulist'> 
    <li>list 1</li> 
    <li>list 2</li> 
    <li>list 3</li> 
</ul> 

dann li wurden gebunden mit Hover-Ereignis wenn sie geladen. wie zum Beispiel:

$('ul').bind('hover',function(){}); 

aber mein Plugin eine Funktion, um dynamischen neuen li Artikels der ul [id = ‚ulist‘] hatte die Zugabe, die .und den neu li nicht den Hover geladen worden war, erhalten Ereignisbindung .such als:

addNewLi : function(){ 
    $('<li />').html('item N').appendTo('#ulist'); 
} 

so wusste ich, ich sollte die neue dynamische binden Elemente erstellt von ‚live‘, aber ich weiß nicht, wo es setzen oder andere Art und Weise ...

Vielen Dank !!

Antwort

1

Sie können die Twin-Handler-Funktionalität in live oder delegate nicht verwenden. Diese Funktionalität ist, glaube ich, für jQuery 1.5 geplant.

Allerdings ist eigentlich nur eine Abkürzung für die beiden Ereignisse mouseenter und mouseleave, so dass es eigentlich sehr einfach ist, die Funktionalität mit diesen Ereignissen nachzuahmen.

Beispiel delegate mit: kann

$('#ulist').delegate('li', 'mouseenter', function() { 
    // code for mouseenter 
}).delegate('li', 'mouseleave', function() { 
    // code for mouseleave 
}); 
+0

Sie verwenden ' 'hover'' mit live/delegieren, aber man kann es einfach nicht 2-Funktionen übergeben. Stattdessen müssen Sie den Ereignistyp testen. Noch +1 für die Delegate-Lösung. – user113716

+0

@patrick dw Klar meine Antwort, dies zu reflektieren, danke. – lonesomeday

+0

funktionieren gut für mich !! Vielen Dank! Du hast mir eine andere Möglichkeit gegeben, mein Plugin zu programmieren !! – qinHaiXiang