Ankündigung

Einklappen
Keine Ankündigung bisher.

jQuery, einem DOM-Knoten eine Payload anhängen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jQuery, einem DOM-Knoten eine Payload anhängen

    Hallo,

    ich möchte bei einem onmouseover/onmouseout den Inhalt (.text()) eines DOM-Knotens mit seinem title-Attribut tauschen. Da während dem Maus drüberfahren/wegfahren ein anderes Skript den Inhalt ausgetauscht haben könnte (es geht um Zeitangaben: "vor 10 Minuten" <-> "10:20 Uhr, 21.12.2010" die im Intervall aktualisiert werden), kann ich nicht einfach Inhalt mit title direkt tauschen, sondern brauche einen Container, in dem ich beide Inhalte speichern kann, um zu wissen was was ist. Dazu kann ich ja bei DOM einfach "myElement.payload = {}" schreiben. Allerdings benutze ich jQuery und $('.datetime').payload = {} hat natürlich nur solange Bestand, wie das jQuery-Objekt (die Variable) existiert. Nun suche ich gerade eine Funktion, die mir am Besten über jQuery das Anhängen von Payload zu DOM-Knoten erlaubt. Über Google finde ich nur "append" und "add", aber ist ja alles nicht was ich suche. Ich meine es gäbe da in jQuery etwas dafür. Andernfalls muss ich mir mit .get(0) halt den DOM-Knoten selbst holen.

  • #2
    Du meinst bestimmt $.data. Damit kannst du auch ein date-object mit einhängen (falls du das brauchen solltest). Du kannst seit 1.4.3 auch mit data-attributen arbeiten, wenn du einfach Startwerte generieren möchtest, siehe auch den entsprechenden blogpost.

    grüße

    Kommentar


    • #3
      Auf eine Antwort von dir hab ich gehofft Danke schön, ich schau mal rein.

      Edit: Klappt perfekt.

      Kommentar


      • #4
        Auf eine Antwort von dir hab ich gehofft
        lol

        Nichts zu danken. Damit kannst du schnell lustige Sachen anstellen. Zum dereferenzieren hab ich mir mal ne kleine Funktion geschrieben:
        PHP-Code:
                _getData : function (el) {
                    if(!
        el) {
                        return {};
                    }
                    var 
        data = $.extend({}, el.data());
                    $.
        each(data, function (keyval) {
                        if ((/
        events/).test(key) || (/handle/).test(key)) {
                            
        delete(data[key]);
                        }
                    });
                    return 
        data;
                } 
        Damit kannste ohne Stress alles mit data machen, was dir gerade einfällt, ohne das direkt am node zu ändern. Evtl kannste das noch gebrauchen.

        Kommentar


        • #5
          Übernimmt das Dereferenzieren nicht schon jQuery?

          Edit: Autsch, ich lese gerade der IE unterstützt das nicht.

          Kommentar


          • #6
            Geht auch im Firefox nicht wirklich zuverlässig

            Kommentar


            • #7
              Für den Editor-Mod in diesem Forum habe ich selbst eine Art Payload-Container implementiert. Die Methode ist zwar nicht ganz sauber, funktioniert aber wunderbar. Dazu habe ich dem DOM-Knoten einfach proprietäre Attribute gegeben (vbmod-insertbefore, vbmod-insertafter und vbmod-script). Durch das von mir vergebene Präfix vbmod ist die Gefahr von Kollisionen gering.

              Kommentar

              Lädt...
              X