Archiv für November, 2010

jQuery Mobile – Web-Apps mit jQuery

Endlich ist es soweit. jQuery Mobile 1.0 Alpha 2 ist released. Und meiner Meinung nach beginnt damit ein neuer Abschnitt in der Entwicklung mobiler Seiten, bzw. von Web-Apps auf touch-fähigen Smartphones.

jQuery Mobile 1.0 Alpha 2

War der erste Alpha release noch sehr buggy, merkt man dass seit dem rund 200 Tickets berarbeitet wurden und auch viele Wünsche der User aus dem Forum einzug gefunden haben. Das jQuery Mobile Team selbst sagt:
Overall the quality of jQuery Mobile has been greatly improved. A number of subsystems have been rewritten (both for clarity and for performance) and cross-browser compatibility has seen a marked increase in quality.

Die Performance im allgemeinen wurde verbessert, neue CSS-Klassen und statische Methoden hinzugefügt und vieles mehr. Den kompletten Überblick bekommt man in den release notes.

Nachdem schon javascript Plugins wie jqTouch, iUi, jo, SproutCore u.a einen ersten Ausblick auf die Entwicklung Mobiler-Apps gegeben haben und auch von Entwicklern gut angenommen wurden, so ist jetzt mit jQuery Mobile wohl eines der, wenn nicht das, mächtigste Framework zum entwickeln Mobiler-Anwendungen auf dem Markt.

Ich habe heute mal mit meinem iPhone die ersten Tests gemacht und muss sagen, mir gefiel sehr was ich gesehen habe. Gerade die Demos waren sehr vielversprechend.

Die Key-features im Überblick:

  • Basierend auf dem jQuery Core. Somit eine geringe Lernkurve, da die Syntax weitestgehend gleich bleibt.
  • Kompatibel mit allen großen Mobilen Plattformen. – iOS, Android, Blackberry, Palm WebOS, Nokia/Symbian, Windows Mobile, bada, MeeGo.
  • Leightweight. Mit gereade mal 12k im der komprimierten-Version.
  • HTML5 gestützte Konfiguration.
  • Automatische installation
  • Volle WAI-ARIA Unterstützung
  • Neue Events wie z.B. das unterstützen von Touch-Events
  • Neue Plugins wie z.B. für das Theming

Das Top-Features ist, dass wirklich alle großen Mobilen Plattformen out of the Box unterstützt werden.
Hier gibt es auch noch mal einen schönen Überblick welche Platformen genau unterstützt werden. Mobile Graded Browser Support.
Wir sind gespannt wie es hier weiter geht und werden das Thema jQuery Mobile als festen Bestandteil hier im Blog integrieren und in nächster Zeit auch eine kleine Tutorial-Serie dazu starten.

Links zu den wichtigsten jQuery Mobile Seiten:

Praxistipp: Suchfeld leeren on focus (jQuery)

Gestern hatte ich wieder diesen Fall….
Man hat´s schon x-mal gemacht, aber immer wenn man es wieder braucht findet man das code-schnippselchen nicht.

Ich wollte heute in einem Projekt einfach nur das Suchfeld, welches default als Wert “Suche” drin stehen hat, auf klick ins Feld leeren und, sollte der User nichts anderes eingegeben haben beim Verlassen das Feld wieder mit diesem Standardwert füllen.

Hier der Code:

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
$('.search').focus(function() {
	value=$(this).val();
	$(this).attr("value","");
});
 
$('.search').blur(function() {
	if($(this).val()=="") {
		$(this).val(value);
	}
});

Ich hoffe das hilft dem ein oder anderen…

fadeToggle – die Neue in jQuery 1.4.4

Diese Woche ist jQuery in einem neuen Release erschienen. Neben einigen Bugfixes und kleinen Ändererungen gibt es auch die neue Funktion “fadeToogle”. Sie funktioniert vom Prinzip her genauso wie “toggleClass” und “slideToogle” und dient, wie die anderen, dazu möglichst einfach zwischen verschiedenen Zuständen zu wechseln. Wir wollen das an zwei Beispielen verdeutlichen.

Werfen wir vorher einen Blick auf die Signatur der neuen Methode:
.fadeToggle( [ duration ], [ easing ], [ callback ] )

Duration ist die Zeit in der das Fading ausgeführt wird
Easing ist die Art des Effektes, wobei es standardmäßig hier keine relevanten Änderungsoptionen gibt
Eine Callback Funktion um nach der Animation beliebigen Code auszuführen.

Der Javascript Code sieht nun wie folgt aus:

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    // Variable um aktuellen Sichtbarkeitsstatus zu speichern
    var toogleState = "visible"
 
    $(document).ready(function() {
        //Beispiel 1
        $("button:first").click(function() {
          $("div#fadingBox").fadeToggle("slow", "linear");
        });
 
        //Beispiel 2
        $("button:last").click(function () {
          $("p:first").fadeToggle("fast", function () {
 
            if(toogleState == "visible"){
                $("button:last").text("zeigen");
                toogleState = "invisible";
            }
            else{
                $("button:last").text("verstecken");
                toogleState = "visible";
            }
 
          });
        });
 
    });

Das erste Beispiel ist ein Box die einfach aus- und wieder eingeblendet wird. Ohne, dass der aktuelle Anzeigestatus sichtbar oder abrufbar wäre.

Das zweite Beispiel zeigt einen einfachen Workaround, um mit dem aktuellen Anzeigemodus zu arbeiten. Also ist das Element gerade sichtbar oder nicht. Die hier vorgestellte Variante ist einfacherer Natur. Es wäre natürlich auch möglich, direkt den Sichtbarkeitsstatus des Objektes selbst abzufragen und entsprechend zu reagieren. Die vorgestellte Möglichkeit wurde wegen der besseren Nachvollziehbarkeit so gewählt. Allerdings wäre sie für größere Projekte wegen einer schlechteren Wartbarkeit weniger zu empfehlen.

Eine Demo dazu findet ihr hier.
Weder das CSS noch das JS sind ausgelagert, also einfach rechte Maustaste und Quelltext anzeigen lassen.