Einführung

Mit jQuery UI kann man HTML Elemente verschiebbar (draggable) machen. Das geht ganz einfach mit:

  1. $(".draggable").draggable({cursor: "move"});

Wird allerdings die Seite neu geladen geht die Information über die aktuelle Position der verschiebbaren Elemente verloren. Folgendes JavaScript Snippet löst das Problem indem es nach dem Verschieben eines Elements die Position in einem Cookie speichert und nach dem Neuladen der Seite die Position wieder ausließt.

  1. jQuery(document).ready(function() {
  2.  
  3. // cookie period
  4. var days = 1;
  5.  
  6. // load positions form cookies
  7. $(".draggable").each( function( index ){
  8. $(this).css( "left",
  9. $.cookie( "im_" + this.id + "_left") );
  10. $(this).css( "top",
  11. $.cookie( "im_" + this.id + "_top") );
  12. });
  13.  
  14. // make draggable, show, bind event
  15. $(".draggable").draggable({cursor: "move"});
  16. $('.draggable').show();
  17. $('.draggable').bind('dragstop', savePos);
  18.  
  19. // save positions into cookies
  20. function savePos( event, ui ){
  21. $.cookie("im_" + this.id + "_left",
  22. $(this).css("left"), { path: '/', expires: days });
  23. $.cookie("im_" + this.id + "_top",
  24. $(this).css("top"), { path: '/', expires: days });
  25. }
  26.  
  27. });

Legt man jetzt im HTML Quelltext ein Element mit der CSS-Klasse "draggable" an, wird es verschiebbar und die Position in einem Cookie gespeichert. Nach den Neuladen der Seite wird das Element automatisch an die gespeicherte Position gesetzt. Wichtig ist, dass man dem Element eine eindeutige CSS-Id gibt, da diese verwendet wird um den Cookienamen zu generieren. So können beliebig viele Elemente gespeichert werden:

  1. <div id="postit" class="draggable">drag me!</div>
  2. <div id="pen" class="draggable">and me!</div>

Damit das Ganze funktioniert muss man nur noch jQuery, jQuery UI und das jQuery Cookie Plugin einbinden:

Diese Technik kommt auch auf unserer Webseite zum Einsatz. Finden Sie raus wo!

Jetzt bookmarken:facebook.comdel.icio.usdigg.comgoogle.comlive.comMister WongTechnorati