Was bedeutet die schreibweise $(function() und ;( function()?

2 Antworten

Hmmm, eventuell ist die Frage herrührend aus einem Kontext von PHP oder Shellscript gemeint? Dort hätte das "$" eine besondere Bedeutung. Hier in Javascript dagegen ist es ein ganz normaler Buchstabe, der für Namen verwendet werden darf. Es handelt sich also um einen kürzest möglichen Namen aus einem einzelnen Buchstaben.

Beim Programmieren - und selbst schon im Mathe-Unterricht ab so der 5. Klasse - macht man das gern so, dass man im sauber vom Rest der Welt abgetrennten Abschnitten für die hauptsächlich im Interesse stehenden Variablen und Funktionen Kurzbezeichner vergibt. So wie in Mathe typischerweise "x", "y" und "y=f(x)". Oder in Physik "F=m*a".

In Javascript hat es sich aufgrund der Flausen irgendwelcher Programmierergruppen eingebürgert, das "$" als Kurznamen für eine Funktion zu benutzen, die den Zugriff auf das "DOM" einer HTML-Seite gestattet. Organisieren kann man sie sich entweder selbst mit sowas wie "getElementById", falls man große Bibliotheken aus Performance- und Lästigkeitsgründen nicht einbinden will, oder man nimmt sich das Monster-Konstrukt "jQuery", welches diese Funktion so aufgebläht hat, dass sie über sämtliche denkbaren Browser kompatibel funktioniert und sämtliche bisher standardisierten Zugriffskonzepte vereint, dafür aber auch selbst in komprimierter Form mehr als hundert Kilobyte "wiegt".

Die zweite Funktions-Syntax, die Du gefragt hattest, und deren Darstellung in der Frage hier wohl vom Forum vermanscht wurde, dürfte die einer "anonymen Funktionsdefinition" sein, wo die Funktion gleich beim Definieren auch aufgerufen und somit genau einmalig ausgeführt wird, dafür aber nicht den Namensraum und den Speicher belastet, weil sie nach Ausführung sofort wieder vergessen wird (als Funktion, nicht die Ergebnisse ihrer Ausführung).

Das zweite Beispiel wird erst aufgerufen (in Javascript wohl angemerkt), wenn folgende Syntax erfüllt ist:

function(){}();

Angegeben wurde aber nur:

;(function()

Ich glaube vielleicht sollte es auch ein Beispiel für eine gekapselte Fuktion sein, die folgendermaßen aussieht:

var args;
(function( args ){})( args )

Diese würde dann unabhängig von anderen Methoden ausgeführt werden und man kann auch Argumente in die Scope einfügen, die aus dem globalen Raum kommen.

0

$() kommt von jQuery, in dem Fall ist $ eine Methode.

Und beim zweiten Bsp. nehme ich an, dass du das Semikolon meinst? Leider kann man das überall einsetzen, wo man will. Der Interpreter kümmert sich nicht darum.

JQUERY Button reset nach Funktion?

Hallo,

ich verwende den Code

$("p").click(function () {

Man kann die Funktion nur einmal aufrufen, wie kann ich nach Abschluss der Funktion die Aufgabe neu starten bzw. nochmal Klicken damit was passiert?

...zur Frage

[Javascript] Function wird nur einmal ausgeführt

Guten Abend :-) ich habe folgendes Problem die folgende Function wird nur ein einziges mal ausgeführt (sie highlighted einen aktuell besuchten Link) also sagen wir mal beim Besuchen von Home wird Home mit der Class "active" versehen und somit grün unterlegt, dann wird diese Unterlegung beim klicken auf das nächste Element entfernt, will ich jetzt nochmal Home anklicken, so wird es nichtmehr grün unterlegt, woran könnte das liegen ?

var old;

$(document).ready(function() {
    $("li > a").click(function() {
        if (old !== undefined) {
            old.className = "blibbb";
            check = undefined;
            element = undefined;
        }
        var check = this.href.split("/").pop().replace(/\b.html\b/, "");
        var element = document.getElementById(check);
        if (element !== undefined) {
            element.className += "active";
        }
    });
});

Weiterhin sollte ich vl sagen, dass die Seite nur ein einziges mal geladen wird, danach rufe ich Inhalte nur für eine Section ab (was bisher funktioniert) mit folgender Function:

$(document).ready(function() {                                                  
    $("li > a").click(function() {                                              
        var link = this.href.split("/").pop();                                  
        $("#main").fadeOut(500);                                                
        setTimeout(function() {                                                 
            $("#main").load((link + ".html"), function() {                      
                $("#main").fadeIn(500);
            });
        }, 500);
    });
});

Vielen Dank im Vorraus! Wenn ihr Verbesserungsvorschläge zu den Functions an sich habt, sind die natürlich auch gerne gesehn, ich bin gerade dabei Javascript zu lernen deswegen verzeiht wenn das keine perfekte Lösung für mein Problem ist.

...zur Frage

HTML Formular wird nicht ausgeführt in Ajax content?

Hallo,

Folgenden Problem.

Ich habe ein sidebar menü und lasse den content mittels Ajax anzeigen.

Jedoch wenn ich im Content ein Formular ausführen möchte (Auswertung auch über Ajax) bekomme ich keine Reaktion.

Zur Probe habe ich das PHP Skript mal außerhalb des Contents ausgeführt wobei dies auch einwandfrei funktioniert hat.

Script (js)

$(document).ready(function(){
	$(".hide").hide();
    $(".dropbox").click(function(){
        $(".hide").slideToggle("fast");
    });
  $("search").click(function(){
    $.get("../functions/searchOrder.php", function(data, status){
        alert("Data: " + data + "\nStatus: " + status);
    });
  });
    $(".order").click(function(){
        $.ajax({
            url: 'html/order.php'
        }).done(function(data) {
            $('.content').html(data).hide(0).fadeIn("slow");
        });
    });
    $(".createOrder").click(function(){
        $.ajax({
            url: 'html/createOrder.html'
        }).done(function(data) {
            $('.content').html(data).hide(0).fadeIn("slow");
        });
    });

//-------------------- Auswertung der Suche----------------------         $("#searchform").submit(function() {             if($("#search").val() == "") {                 $("#response").html("Bitte füllen sie die Suche korrekt aus!").hide(0).fadeIn("slow");         } else {             $("#response").html("aNotes werden geladen...").hide(0).fadeIn("slow")             $.ajax({                 type: "GET",                 url:  "../functions/searchOrder.php", data:  "send=1&search=" + $("#search").val(),                 success: function(msg)                 {                     $("#response").html(msg);                 }             });         }         return false;     });

});

Formular (HTML)

 <form id="searchform" action="../functions/searchOrder.php" method="get">
      <th>
	    <input type="search" class="textbox" id="search" name="search" placeholder="Geben sie eine Kunden ID ein">
      </th>
	  <th>
	  <input type="submit" name="send" class="submit" value="Suchen">
	  </th>
	</form>
...zur Frage

Was möchtest Du wissen?