Dojo-attach-Ereignis für dynamisch erzeugte element
Habe ich ein Formular. Ich Dojo. Alles funktioniert einwandfrei. Ich benutze Dojo, die Klasse zu wechseln, die Werte und Attribute der input-Elemente, basierend auf Benutzereingaben(in der Art, wie Validierung).
Das problem ist, weil der DH, ich bin erforderlich, um erstellen Sie ein neues input-element(die ich kenne), wenn ich wollen, ändern Sie den 'Typ' einer Eingabe von 'text' auf 'password'.
Sobald ich erstelle dieses element(die alle die gleichen Attribute und den gleichen id) als das element, das Sie ersetzt, mein Dojo Funktionen wie ...
dojo.query("#password2")
.connect("onclick",function(){
//if password2 is equal to the default text
if( this.value == "Confirm your password" ){
this.value = "";
UpdateType( this ); //this is the function that dynamically creates the new input element to have a type of 'password'
}
dojo.query("#list_password2").removeClass("error");
});
... nicht mehr Arbeit auf die neu erstellte Elemente. Ich habe laufen in dieses problem vor und verwendet, um jQuery verwenden und hatte eine livequery plugin zugewiesen, die Ereignisse als Elemente. Gibt es ein plugin oder native Funktionalität für Dojo zu tun, dass ich bewusst bin?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun, es ist ziemlich seltsam, dass das erste Ergebnis in Google ist diese Antwort und, dass es nicht bieten eine up-to-date-Antwort.
Sowieso, für denjenigen ist, fügen Sie einen Ereignis-dynamisch erzeugte Elemente, da dojo 1.7, event-delegation, die verwendet werden können. Ein einfaches Beispiel wäre:
Ich glaube, dieser code ist ziemlich selbsterklärend, deshalb werde ich nicht ins detail, das viel. Es gibt jedoch einige würdige Hinweise auf Ereignis-delegation:
Und natürlich, vergessen Sie nicht, laden Sie die
dojo/query
ersten...Lesen Sie mehr weitere Anweisungen... Hoffe, das hilft!
Erstens wäre es nicht einfacher zu erstellen ein paar extra Felder zunächst, und dann nur ein - /ausblenden je nach Auswahl des Nutzers? Gut, es ist nicht livequery im Dojo, aber es ist nicht zu schwer zum binden von event-Handlern zu bestimmten ids anstelle von Knoten mithilfe von Dojo ' s verbinden. Sie brauchen nur zu bewegen bis in die Knoten-Hierarchie, alle fangen die Ereignisse, die Blase, die weit und filtern Sie die richtigen Knoten basierend auf id. Zum Beispiel, wenn Sie hatte ein Formular mit der id
login
Sie:Schauen Sie sich auch jrburke Antwort hier: Kann dojo Zugriff auf die Funktion assosiated mit einem HTML-Elemente Ereignis?
Ich glaube, Dojo-Verhalten sind die Mechanismen, die Sie verwenden möchten. Es registriert wird ein dojo.query-Selektor mit einigen damit verbundenen handeln ("Verhalten"). Es wird verfolgen von änderungen an der DOM-und re-wenden Sie das Verhalten, um neue Spiele.
Dieser link sollte hilfreich sein: http://dojocampus.org/content/2008/03/26/cleaning-your-markup-with-dojobehavior/
Vielleicht möchten Sie auch zu prüfen, mit einem Klasse-basierte Auswahl-Stil statt der id-basiert. In meiner Erfahrung, die entfernen dann hinzufügen von Knoten im DOM mit der gleichen id problematisch ist in einigen Browsern.