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:
Beispiel-Rezepte in diesem Kapitel zeigen, wie jQuery genutzt werden kann, um die Bedürfnisse grundlegenderer und interaktiverer Web-Inhalte zu erfüllen. Die ersten drei Rezepte behandeln die verschiedenen Methoden, mit denen Daten in einem Web-Browser bewahrt werden.Danach folgen Rezepte, die den Umgang mit Ajax und JavaScript vereinfachen sollen, wenn die Menge an Code und Daten in Ihrer Anwendung wächst.

Auf dem Client speichern
    Problem
    Sie schreiben eine Rich Internet Application, die größere Mengen an Benutzerdaten im Web-Browser verarbeitet. Die Daten sollen aus Performance-Gründen oder zur Offline-Arbeit auf dem Rechner des Anwenders zwischengespeichert werden.
    Lösung
    Eine einfache Todo-Liste soll als Beispiel für das Speichern auf dem Client dienen. Wie bei vielen Rezepten in diesem Kapitel wird ein jQuery-Plugin genutzt werden, um die Unterschiede zwischen den Browsern auszubügeln:


    17.1 - Auf dem Client speichern
    
    



    

17.1 - Auf dem Client speichern


    

Storage-Engine:


    
    
    
    

    Der HTML-Code besteht aus Form-Elementen, mit denen die Todo-Liste bearbeitet werden kann: Ein Textfeld, um eine Aufgabe einzugeben, sowie Buttons, um eine Aufgabe hinzuzufügen und alle Aufgaben zu löschen. Die eingegebenen Aufgaben werden als ungeordnete Liste ausgegeben:
(function($) {
    $.jStore.ready(function(ev,engine) {
     engine.ready(function(ev,engine) {
     $('#storage-engine').html($.jStore.CurrentEngine.type);
     $('#task-list').append($.store('task-list'));
     });
    });
    Das Plugin jStorebietet zwei Callbacks an:
jStore.ready()
und
engine.ready()
. So wie die jQuery-Funktion
ready()
erlauben es uns diese Funktionen, eigene Schritte durchzuführen, sobald jStore bereit und die gewählte Storage Engine mit ihren Initialisierungsschritten fertig ist. Diese Einsprungpunkte werden genutzt, um die aktuelle Storage Engine und alle abgespeicherten Elemente auf der Seite anzuzeigen:
$('document').ready(function() {
     $('#task-add').click(function() {
     var task = $('#task-input').val();
     var taskHtml = '
  • erledigt ' + task + '
  • ';
         $.store('task-list',$('#task-list').append(taskHtml).html());
         return false;
         });
        Ist das Dokument fertig, dann werden Click-Events an die entsprechenden Steuerelemente gebunden. Wird der Button »Aufgabe hinzufügen« angeklickt, bauen wir ein List-Item-Element mit dem Inhalt des Aufgaben-Textfeldes und einem Link, um die Aufgabe als erledigt zu markieren. Das List-Item wird dann an den Inhalt der Aufgabenliste angehängt und diese Liste im lokalen Speicherbereich mit dem Schlüssel
    task-list
    abgelegt. Später kann die Liste dann mit diesem Schlüssel wieder ausgelesen werden, so wie es auch im Callback
    engine.ready()
    geschieht:
    $('#list-clear').click(function() {
         $('#task-list').empty();
         $.remove('task-list');
         return false;
         });
        Wird der Button »Alle Aufgaben entfernen« angeklickt, dann wird das Element mit der Todo-Liste geleert. Der Schlüssel
    task-list
    und der dazugehörige Wert werden dann aus dem lokalen Storage entfernt:
    $('#task-list a').live('click',function() {
         $(this).parent().remove();
         var taskList = $('#task-list').html();
         if( taskList ) { $.store('task-list',taskList); }
         else { $.remove('task-list'); }
         return false;
         });
    });
    })(jQuery);
        Schließlich wird ein
    live
    -Event an die
    done
    -Links jedes einzelnen Elements in der Todo-Liste gebunden. Durch Verwenden der Funktion
    live()
    anstatt
    bind()
    oder einer Kurzform wie
    click()
    wird an alle Elemente, die zu
    #task-list a
    passen, das Click-Event gebunden, selbst an Elemente, die beim Aufruf von
    live()
    noch gar nicht vorhanden sind. Dadurch können wir »erledigt«-Links für jedes neue Element einfügen, ohne das Click-Event bei jedem Einfügen neu zuzuweisen.
        Wenn ein Element als erledigt markiert wird, entfernen wir es aus der Liste und speichern die aktualisierte Liste im lokalen Storage mit dem Schlüssel
    task-list
    . Man muss allerdings ein bisschen aufpassen, wenn man die aktualisierte Liste speichert:
    if( taskList ) {

    Weitere Kostenlose Bücher