molily: problem

Beitrag lesen

Hallo,

~~~ javascript $(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.

Das ist keine Immediately-Invoked Function, was man daran erkennt, dass sie nicht immediately invoked wird. ;) Dazu fehlt der Call-Operator.

Was ist der Unterschied zwischen

function whatever() {}

und

$(function() {});

... und der Variante ohne jQuery

   (function() {}) ();

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.

Das gilt für Beispiel 2, nicht für Beispiel 3.

$(fn) ist äquivalent zu $(document).ready(fn). Es registriert in neueren Browsern einen Handler für den Event DOMContentLoaded bei document. Da DOMContentLoaded bereits gefeuert worden sein kann, wird mit document.readyState geprüft, ob das DOM bereits zur Verfügung steht.

http://www.w3.org/TR/html5/dom.html#dom-document-readystate
http://www.w3.org/TR/html5/dom.html#current-document-readiness

Falls ja, wird die übergebene Funktion sofort ausgeführt (um genau zu sein: asynchron bei der nächsten Gelegenheit). Insofern verhält sich der Code ähnlich zu einer IIFE. Das ist ein netter Nebeneffekt. Aber in erster Linie geht es hier darum, Code beim »DOM-ready« auszuführen.

Siehe auch
https://github.com/jquery/jquery/blob/master/src/core/ready.js

Mathias

-- Chaplin.js - JavaScript application architecture
049

problem

  1. 0
    1. 0
  2. 0
    1. 0
      1. 0
        1. 0
          1. 0
            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
        2. 0
      2. 7
        1. 0

          Korrektur am Codebeispiel

        2. 0
          1. 0
            1. 0
              1. 0
                1. 0

                  JQuery, Funktionen und Anonyme Funktionen

                  1. 0
                    1. 0
                      1. 0
                        1. 0
                    2. 0
                      1. 0
                      2. 0
                        1. 0
                          1. 0
        3. 0
        4. 3
          1. 0
      3. 0
      4. 0

        Gibt es Benchmark-Tools für Seiten mit Javascript?

  3. 0
  4. 0
  5. 1

    Sinnvoller Titel, Problembeschreibung

    1. 0
      1. 0
        1. 0
          1. 0
            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
                  2. 0
                    1. 0