sema32: jQuery: this

Hallo Forum,

ich habe ein Problem mit einem jQuery-Modul und komme trotz Suche im Internet nicht weiter.

Das Script sieht folgendermaßen aus:

$("img[alt^='Popup:']").fancybox({
'content' : $(this).src,
'cyclic' : 'true',
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'overlayColor' : '#000',
'titlePosition' : 'inside'
}
});

Was nicht richtig funktioniert ist die Zeile "content", ich möchte gerne das Attribut "src" des <img>-Tags, auf dem die Fancybox-Funktionalität angewandt wird verwenden. So wie ich es verstehe, greift $(this) hier auf die Fancybox-Funktion zu und nicht auf das beinhaltende <img>-Element. Kann mir da jemand weiter helfen?

Vielen Dank.

  1. ich habe ein Problem mit einem jQuery-Modul und komme trotz Suche im Internet nicht weiter.

    Die Suche in der jQuery-Dokumentation wäre schlauer gewesen.

    Was nicht richtig funktioniert ist die Zeile "content", ich möchte gerne das Attribut "src" des <img>-Tags,

    Des img-Elements - Tags sind in diesem Kontext (DOM) bereits nicht mehr relevant.

    Die .attr()-Methode ist das, was du suchst.

    Was ich allerdings nicht verstehe: wozu willst du das Bild, welches du eh schon hast, nochmal anzeigen?

    1. Hallo,

      vielen Dank für die schnelle Reaktion.

      Ich habe auch in der jQuery-Doku nachgesehen, aber kam respektive komme trotzdem nicht weiter.

      Könntest Du so nett sein und mir schreiben, wie ich die .attr()-Methode in diesem Kontext anwende?

      Vielen Dank dafür.

  2. Hi,

    $("img[alt^='Popup:']").fancybox({
    'content' : $(this).src,
    'cyclic' : 'true',
    'transitionIn' : 'elastic',
    'transitionOut' : 'elastic',
    'overlayColor' : '#000',
    'titlePosition' : 'inside'
    }
    });
    Was nicht richtig funktioniert ist die Zeile "content", ich möchte gerne das Attribut "src" des <img>-Tags, auf dem die Fancybox-Funktionalität angewandt wird verwenden. So wie ich es verstehe, greift $(this) hier auf die Fancybox-Funktion zu und nicht auf das beinhaltende <img>-Element. Kann mir da jemand weiter helfen?

    Nein. Der Funktionsaufruf von fancybox hat ein Objektliteral, welches in dem Kontext ausgeführt wird, in dem du dich gerade befindest.

    Ungetestet könnte soetwas für dich funktionieren:

      
    var obj = {  
    'cyclic'	 : 'true',  
    'transitionIn'	 : 'elastic',  
    'transitionOut'	 : 'elastic',  
    'overlayColor'	 : '#000',  
    'titlePosition' : 'inside'  
    };  
      
    $("img[alt^='Popup:']").each(function() {  
      var $this = $(this);  
      obj.content = $this.src;  
      $this.fancybox(obj);  
    });  
      
    
    

    Bis die Tage,
    Matti

    1. Vielen Dank für die schnelle Reaktion.

      Leider funktioniert Dein Lösungsansatz nicht
      (obwohl er mir sehr stimmig erscheint).

    2. Hallo nochmal,

      eine kleine Modifikation hat die Lösung gebracht:

      $("img[alt^='Popup:']").each(function() {
        var $this = $(this);

      obj.content = $this.attr("src");

      $this.fancybox(obj);
      });

      Dankeschön für Deine Hilfe.