"Stabile Anwendungsentwicklung erfordert die strikte Organisation des Codes in klare 'Blöcke'."Zwischenspeicher für das DOM und bindende Klickereignisse für Elemente, die noch nicht gerendert wurden
Zu diesem Zweck verwende ich Moustache, um Daten aus meinen Skripten in meine HTML zu rendern.
ich meinen Schnurrbart Vorlagen in speziellen Script-Tags am Speicherung:
<script id="template" type="text/template">
Mustache template goes here and is invisible
</script>
die Vorlage zu machen in einem div
ich einfach das Schnurrbart-Funktion Jetzt
var template = $('#template').html();
$('#someDiv').html(Mustache.render(template));
machen rufen vorstellen, ich möchte ein binden Klicken Sie auf ein Element in einer Moustache-Vorlage oder cachen Sie die Elemente, die ich später verwenden werde ... Das kann ich beim Laden der Seite natürlich nicht tun, weil die Vorlage noch nicht gerendert wurde.
Um das Ereignis zu arbeiten, muss ich ein Ereignis nur nach deklarieren Ich habe das HTML gerendert. Um ein Element zu verwenden, muss ich es manuell auswählen, wenn es z.B. $('.foo')
this.foo
Die Konsequenz ist, dass ich jetzt auf ('klicken Sie auf) Events und jQuery Selections überall in meinem Objekt und nicht in den bindEvents und cacheDOM Funktionen gestreut haben.
Hier ist eine Geige mit einem vereinfachten Beispiel für das Problem: https://jsfiddle.net/6L2ry6hr/
Im obigen Beispiel nicht zu schlecht ist ... aber wie mein apps komplexe bekommen ist es ein wenig umständlich zu werden.
Der Link ist unvollständig –
Können Sie umfassen 'html',' javascript' in Frage? Was versuchst du zu erreichen? Was ist der Zweck von IIFE und 'foo' Objekt? – guest271314
Mögliches Duplikat [Jquery Ereignis wird nicht Feuer nach Ajax-Aufruf] (http://stackoverflow.com/questions/13767919/jquery-event-wont-fire-after-ajax-call) – Tibblez