Kurzfristig: Auftritte mit Niklas Müller (Trompete) und mir (Klavier) im Gymnasium Bammental am Montag & Mittwoch, 21. + 23. Mai. Details
7. January 2010

Bilder austauschen mit jQuery

Ich habe mir heute das Buch “jQuery” von Ralph Steyer gekauft. Bereits nach dem zweiten Kapitel fiel mir ein konkreter Anwendungszweck ein: Ich wollte den Bilder- Austauschen- Effekt auf meiner Startseite erneuern. Dabei sollte jQuery zum Einsatz kommen und das HTML entschlackt werden (invalide Attribute wurden entfernt etc.). So weit so gut. So sieht der Quelltext meiner Seite jetzt aus (Ausschnitt):

<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

  <script type="text/javascript">
    //preload image
    clearImage = new Image(); 
    clearImage.src = "marcus_cicero_sprechblase.jpg";
    $(document).ready(function() {
      $("#swapImage").hover(function() {
        $(this).attr({src:"marcus_cicero_sprechblase.jpg"});
      });
    });
  </script>
</head>
<body>
  <p style="text-align:center; margin-top: 20px;">
    <a href="/wp">

      <img src="marcus_cicero.jpg" width="320" height="475" id="swapImage" title="Marcus Tullius Cicero">
    </a>
  </p>
</body>

Zur Erklärung: Zuerst wird über das CDN von Google die Funktionsbibliothek jQuery eingebunden. Dann lade ich das Bild mit der Sprechblase vor und sage jQuery, dass es bei dem Rüberfahren über das Bild mit der Maus das Bild austauschen soll. So einfach und doch so genial.

Aus Performance- Gründen wurde der Hintergrundsound bei der Startseite bei den Aufräumarbeiten gleich mit rausgeschmissen.

Update: Die Lösung, wie ich sie oben beschrieben habe, hat leider den Schönheitsfehler, dass das Bild mit der Sprechblase immer noch sichtbar ist, selbst wenn man schon längst mit der Maus wieder wo anders ist. Diese Lösung hier funktioniert besser:

$(document).ready(function() {
  $("#swapImage").bind('mouseover', function(){
    $(this).attr({src:"marcus_cicero_sprechblase.jpg"});
  });
  $("#swapImage").bind('mouseout', function(){
    $(this).attr({src:"marcus_cicero.jpg"});
  });
});

Kommentare

Zu diesem Beitrag wurden keine Kommentare verfasst.

Commenting is not available in this weblog entry.