Bücher online kostenlos Kostenlos Online Lesen
JQuery Kochbuch (German Edition)

JQuery Kochbuch (German Edition)

Titel: JQuery Kochbuch (German Edition) Kostenlos Bücher Online Lesen
Autoren: jQuery Community Experts
Vom Netzwerk:
'>', '>' );
}
    ----

Code aus anderen Bibliotheken übernehmen
    Problem
    Sie haben in einer anderen JavaScript-Bibliothek eine nützliche Funktion gefunden und wollen die gleiche Technik in Ihrem jQuery-Code nutzen. In diesem Fall handelt es sich um die Methode
.radioClass()
ausder Ext Core-Bibliothek , die den gefundenen Elementen eine Klasse hinzufügt und sie gleichzeitig allen Geschwister-Elementen der gefundenen Elemente entzieht .
    ----
    Note
    Der Name
.radioClass()
entstammt dem Verhalten von Radio Buttons in Webanwendungen und Desktop-Applikationen – man klickt auf einen Button und deselektiert damit alle anderen Buttons in der gleichen Radio Button Group.
    Der Name Radio Button für diese Eingabe-Elemente stammt von den mechanischen Sender-Knöpfen in alten Autoradios – drückt man einen Knopf, springen alle anderen Knöpfe heraus.
    ----
    Nehmen wir einmal diesen HTML-Code:

    
Eins

    
Zwei

    
Drei

    
Vier


    Sie möchten nun folgenden Code ausführen können:
// Die Klasse 'hilite' dem Element div#three hinzufügen
// und sie von allen Geschwister-Elementen entfernen
// (z.B. div#one)

$('#three').radioClass('hilite');
    Vielleicht wollen Sie sogar eine »Multi-Select«-Radio-Klasse:
// Klasse 'hilite' zu div#two und div#four
// hinzufügen und von den anderen Geschwister-
// Elementen entfernen (div#one und div#three)

$('#two,#four').radioClass('hilite');
    Lösung
    Schreiben Sie ein einfaches Plugin, um jQuery die Methode
.radioClass()
hinzuzufügen:
// Entfernen der angegebenen Klasse von jedem Geschwister-Element
// der selektierten Elemente, dann Hinzufügen der Klasse zu den
// selektierten Elementen. So können auch mehrere Geschwister-Elemente
// selektiert sein.
//
// Danke an Ext Core für die Idee.

jQuery.fn.radioClass = function( cls ) {
    return this.siblings().removeClass(cls).end().addClass(cls);
};
    Die Funktion ist so kurz, dass man sie auch noch als Einzeiler versteht, aber durch das in Ihre verketteten jQuery-Methoden formatieren beschriebene Einrücken wird der Code noch lesbarer:
jQuery.fn.radioClass = function( cls ) {
    return this // Verketten starten, gibt Ergebnis zurück
     .siblings() // Selektieren aller Geschwister der selektierten Elemente
     .removeClass(cls) // Entfernen der Klasse aus dieser Selektion
     .end() // Zurück zur ursprünglichen Selektion
     .addClass(cls); // Klasse zu selektierten Elementen hinzufügen
};
    Diskussion
    Der Komponist Igor Strawinski soll einmal gesagt haben: »Gute Komponisten leihen sich Ideen aus, große Komponisten stehlen sie.« Er hat dieses Zitat anscheinend von T.S.Eliot gestohlen, der schrieb: »Unreife Dichter imitieren, reife Dichter stehlen.«
    Gute Ideen finden sich an vielen Stellen und andere JavaScript-Bibliotheken sind voll mit gutem Code und guten Ideen. Wann immer es in einer anderen Open-Source-Bibliothek Code gibt, den Sie nutzen möchten und auch zur Zusammenarbeit mit jQuery bringen können, sollten Sie das ruhig tun – vorausgesetzt, Sie respektieren das Copyright und die Lizenz der anderen Autoren.
    ----
    Note
    Informationen zu Open Source und freier Software finden Sie auf folgenden Sites:
    http://www.opensource.org/
http://www.fsf.org/
    ----
    In Fällen wie diesem brauchen Sie vielleicht sogar nicht einmal den eigentlichen Code – die Implementierung ist einfach und nur die Idee der »Radio-Klasse« ist der entscheidende Aspekt. Auch wenn es dann nicht zwingend notwendig ist, sollten Sie doch die Quelle Ihrer Idee mit angeben – das ist einfach guter Stil.
    Ob die Idee nun von jemand anderem oder von Ihnen selbst stammt – in erstaunlich vielen Fällen können Sie ein nützliches jQuery-Plugin in einer oder wenigen Code-Zeilen schreiben.
    ----
    Was ist jQuery.fn und warum nutzen es die jQuery-Plugins?
    jQuery.fn
referenziert auf das gleiche Objekt wie
jQuery.prototype
. Wenn Sie dem Objekt
jQuery.fn
eine Funktion hinzufügen, fügen Sie es eigentlich
jQuery.prototype
hinzu.
    Erstellen Sie mit
jQuery()
oder
$()
ein jQuery-Objekt, dann rufen Sie in Wirklichkeit
new jQuery()
auf. (Der jQuery-Code erledigt das automatisch für Sie.) Wie jeder andere JavaScript-Konstruktor stellt
jQuery.prototype
Methoden und Standard-Eigenschaften bereit, die jedes der von
new jQuery()
erzeugten Objekte besitzt. Wenn Sie also ein
jQuery.fn
-Plugin schreiben, ist das also klassische objektorientierte JavaScript-Programmierung, wobei Sie

Weitere Kostenlose Bücher