Hi,
$(function() {
$("#ul1 > li").click(function(li) {
var url = $(li).find("a").attr("href");
document.window.location.href = url;
});
});
>
> Wie nennt man diese Schreibweise einer Funktion?
Immediately Invoked Function Expression (IIFE), hier die jQuery-Notation davon.
> Was ist der Unterschied zwischen
>
> `function whatever() {}`{:.language-javascript}
>
> und
>
> `$(function() {});`{:.language-javascript}
... und der Variante ohne jQuery
`(function() {}) ();`{:.language-javascript}
Beispiel 1 definiert eine Funktion mit einem Namen, die durch Angabe ihres Namens und eines Klammernpaares (ggf. mit Parameterliste) bei Bedarf aufgerufen wird. Beispiel 2 und 3 definieren eine anonyme (namenlose) Funktion, die im jQuery-Fall wegen des umschließenden $(), im anderen Fall durch die angehängten Funktionsklammern sofort nach der Deklaration aufgerufen wird.
Vom Kontrollfluss her verhält sich so eine IIFE also genauso, als stünde der Code des Funktionsrumpfes direkt im Script. Der Vorteil ist jedoch, dass die IIFE durch die Kapselung in eine Funktion einen eigenen Namensraum hat und lokale Veriablen verwenden kann.
> Wann bringt es Vorteile, Funktionen so zu schreiben?
Wenn man globale Variablen um jeden Preis vermeiden möchte, etwa weil sie mit anderen Scripten kollidieren könnten.
Ciao,
Martin
--
Gibst du dem Opi Opium, haut Opium den Opi um.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(