Ergebnis 1 bis 8 von 8
  1. #1
    donsimon ist offline Grünschnabel
    registriert
    06-01-2009
    Beiträge
    5

    [jQuery] in $.post() auf this zugreifen?

    Hallo,
    das ist mein erster Post hier, aber "über-Code-meckern" ist trotzdem erlaubt

    Erstmal ein Bild, das Template (Genshi) und mein JS-Code. Die Daten in der Tabelle kommen aus einer Datenbank. Was ich vorhabe ist folgendes: Wenn auf eines der Icons geklickt wurde, wird ein POST-Request an den Server geschickt (funktioniert). Anschließend soll das Icon geändert werden (funktioniert nicht). Eigentlich ist das ja eine triviale Aufgabe; mein Problem ist nur, dass ich in der Funktion $.post nicht mit this auf den angeklickten Link zugreifen kann. Wenn ich das versuche, greife ich mit this auf das aktuelle Objekt zu, also ist this in dem Fall eine Referenz zur Funktion $.post.

    Falls ihr vom Genshi-Template zu verwirrt sein solltet, hier das generierte XHTML (nur der entscheidende Teil).

    HINWEIS: Cross-Post mit [jQuery] in $.post() auf this zugreifen? - XHTMLforum

  2. #2
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [jQuery] in $.post() auf this zugreifen?

    Code:
    $(document).ready(function() {
      $(".toggle-user-activity").click(function() {
        function getCallback(obj)
        {
          return function(active) {
            image = (active) ? "dialog-apply.png" : "edit-delete.png";
            path = "<img src=\"/static/images/icons/" + image + "\" alt=\"" + active + "\" />"
            console.log(path);
            // Wie kann ich hier auf den angeklickten Link zugreifen? Nicht mit this!
            // mit obj
          }
        }
        $.post(this.href, getCallback(this));
        return false;
      });
    }
    oder

    Code:
    $(document).ready(function() {
      $(".toggle-user-activity").click(function() {
        var obj = this;
        $.post(this.href, function(active) {
          image = (active) ? "dialog-apply.png" : "edit-delete.png";
          path = "<img src=\"/static/images/icons/" + image + "\" alt=\"" + active + "\" />"
          console.log(path);
          // Wie kann ich hier auf den angeklickten Link zugreifen? Nicht mit this!
          // mit obj
        });
        return false;
      });
    }

  3. #3
    donsimon ist offline Grünschnabel
    registriert
    06-01-2009
    Beiträge
    5

    AW: [jQuery] in $.post() auf this zugreifen?

    Danke für die Antwort! Jetzt habe ich ein sehr seltsames Verhalten entdeckt: das Bild kann nur von "edit-delete.png" zu "dialog-apply.png" geändert werden --- aber nicht umgekehrt

    Mein Code sieht jetzt so aus:Paste #98373 | LodgeIt!
    Ich habe mit jQuery allgemein noch nicht so viel Erfahrung, ist html(val) da überhaupt die richtige Funktion? Mit Firebug habe ich herausgefunden, dass sich die Variable image sich nie ändert. Ob die Variable lokal oder global ist, spielt scheinbar keine rolle.

  4. #4
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [jQuery] in $.post() auf this zugreifen?

    Ich habe auch keine Ahnung von jQuery. wenn es aber in eine richtung geht, hat es nichts mit der html funktion zu tun. (obj.innerHTML=path; würde es auch machen).
    was übergibt post denn an das callback als parameter. dein active ist auf jeden fall immer != 0.

  5. #5
    donsimon ist offline Grünschnabel
    registriert
    06-01-2009
    Beiträge
    5

    AW: [jQuery] in $.post() auf this zugreifen?

    Zitat Zitat von hesst Beitrag anzeigen
    wenn es aber in eine richtung geht, hat es nichts mit der html funktion zu tun.
    Was meinst du mit "in eine Richtung"?
    Zitat Zitat von hesst Beitrag anzeigen
    (obj.innerHTML=path; würde es auch machen).
    Nein, leider nicht. Wie man in der Doku von jQuery lesen kann, ist
    Code:
    $(obj).html(val)
    nichts anderes als syntaktischer Zucker für
    Code:
    obj.innerHTML = val
    Zitat Zitat von hesst Beitrag anzeigen
    was übergibt post denn an das callback als parameter.
    Den Satz habe ich nicht verstanden. Wenn das eine Frage sein soll, gibt es dafür das da: ?. An den Server wird keine Information explizit gesendet. Implzit bekommt er den Benutzernamen (über die URL).
    Zitat Zitat von hesst Beitrag anzeigen
    dein active ist auf jeden fall immer != 0.
    Dass du damit falsch liegst, beweise ich mit einem Screenshot. Erklärung: ich habe vier Mal auf ein Icon geklickt. Der "Ajax-Kram" funktioniert also. Was immer noch nicht klappt, ist das ändern des Icons.

  6. #6
    donsimon ist offline Grünschnabel
    registriert
    06-01-2009
    Beiträge
    5

    AW: [jQuery] in $.post() auf this zugreifen?

    Ich habe jetzt einen Weg gefunden, der funktioniert!

    Ich lasse den Pfad komplett serverseitig generieren. Dann klappts auch mit den Nachbarn. Das JS-Skript ist somit ein wenig geschrumpft: Paste #98452 | LodgeIt!

    Ob das der optimale weg ist, weiß ich nicht. Jedenfalls klaptt es jetzt. Und das beste: JavaScript wird nicht vorausgesetzt, es funktioniert auch ohne (dann muss aber die ganze Seite neu geladen werden).

    PS: Ja, ich finde die Smilyes von macuser.de nu' mal schöner

  7. #7
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: [jQuery] in $.post() auf this zugreifen?

    Zitat Zitat von donsimon Beitrag anzeigen
    Was meinst du mit "in eine Richtung"?
    das hier:
    Zitat Zitat von donsimon Beitrag anzeigen
    das Bild kann nur von "edit-delete.png" zu "dialog-apply.png" geändert werden --- aber nicht umgekehrt

    was unterscheidet
    Zitat Zitat von hesst Beitrag anzeigen
    (obj.innerHTML=path; würde es auch machen)
    von dem du sagst es geht nicht, von
    Zitat Zitat von donsimon Beitrag anzeigen
    ist
    Code:
    $(obj).html(val)
    nichts anderes als syntaktischer Zucker für
    Code:
    obj.innerHTML = val
    )
    Zitat Zitat von donsimon Beitrag anzeigen
    Den Satz habe ich nicht verstanden.
    deine funktion die du post übergibst erwartet einen parameter active
    Code:
    $.post(this.href, function(active) {
    dein framework muß im onreadystatechange diese funktion aufrufen und dieser den parameter active übergeben. was ist das.

    Zitat Zitat von donsimon Beitrag anzeigen
    Dass du damit falsch liegst, beweise ich mit einem Screenshot. Erklärung: ich habe vier Mal auf ein Icon geklickt. Der "Ajax-Kram" funktioniert also. Was immer noch nicht klappt, ist das ändern des Icons.
    das beweist nichts(wenn meine Vermutung stimmt, genau das gegenteil)! aber da du dir scheinbar nicht helfen lassen willst...
    Geändert von tsseh (07-01-2009 um 16:29 Uhr)

  8. #8
    donsimon ist offline Grünschnabel
    registriert
    06-01-2009
    Beiträge
    5

    AW: [jQuery] in $.post() auf this zugreifen?

    Danke für die Erklärungen und Denkanstöße! Jetzt habe ich verstanden, was du meinst. Ich musste letztendlich nur die Bedingung in Zeile 3 ändern. Das Skript sieht jetzt so aus und funktioniert auch: Paste #98464 | LodgeIt!

Ähnliche Themen

  1. auf externen DOM zugreifen?
    Von AlphaGen im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 05-12-2008, 15:10
  2. Auf unterstes Frame zugreifen
    Von Lioba im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 05-11-2007, 00:26
  3. Foldout Menü vertikal mit 2 Subebenen
    Von RealGsus im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 01-11-2007, 10:48
  4. Auf Request Parameter zugreifen
    Von thea im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 29-09-2006, 21:03
  5. Auf InnerText eines Elements in ANDEREM FRAME zugreifen?
    Von Master_Retsam im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 31-07-2006, 18:23

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •