Der Link, den Sie zur Verfügung gestellt funktioniert nicht (gibt mir Timeout), damit ich hoffe, dass ich verstanden, was Sie gefragt.
über das, was dort passiert:
In Ihrem Skript erstellt man einen Verschluss und band es zu einem Click-Ereignisse. Jedes Mal, wenn Sie auf das Element mit der Klassenschaltfläche klicken, wird die anonyme Funktion ausgelöst. Jedes Mal, wenn es ausgelöst wird, definiert es die Funktion alertThem() und ruft sie auf. Nur einmal definiert es, nur einmal ruft es auf. Der Umfang dieser Funktion ist ihr Elternteil, die Schließung. Diese Funktion ist außerhalb dieses Bereichs nicht definiert, sodass Sie sich keine Gedanken über die Doppeldefinition machen müssen.
Seitennotiz hier: Persönlich als Faustregel denke nicht, ist eine gute Idee, Funktionen wie diese zu definieren, aber wenn es zu Ihrem Projekt passt ... gehen Sie dafür.
Jetzt über die Duplizierung. Da ich den Link nicht sehen kann, denke ich, dass Sie sich auf doppelte Ereignisbindung beziehen.
In js kann eine beliebige Anzahl von Ereignissen an dasselbe Element gebunden werden. Sie können zum Beispiel beim Klicken auf etwas klicken, das sagt "Hallo, Sie klickte mich", dann binden Sie auch auf etwas klicken, das sagt "Hallo, Sie haben eine Nachricht erhalten, bevor Sie sagten, dass Sie mich angeklickt haben". Wenn Sie auf dieses Element klicken, sehen Sie beide Nachrichten.
Dies kann tatsächlich ein Problem werden. Sie haben 3 Optionen:
wirklich vorsichtig sein, wie Sie Ereignisse binden
Verfolgung von Halten Sie, was Sie verpflichtet
Überprüfen Sie, ob Ereignisse bereits gebunden sind (obwohl das ein bisschen unzuverlässig ist). Sie können prüfen, wie hier: jQuery find events handlers registered with an object