Schreiben in ein data- * -Attribut und Abrufen mit jQuery .data () [duplizieren]

8

Ich habe ein Problem mit dem on-Attribut. Ich habe eine kleine Reihe von Methoden geschrieben, um API-Anrufe zu senden.

Das Markup ist wie folgt:

%Vor%

und eine Ereignisaufzeichnung wie folgt erhalten:

%Vor%

Die api_post_v1 sendet den Anruf korrekt.

Es gibt Code, der den Callback behandelt, und er setzt das Markup auf:

%Vor%

Der Code dafür ist wie folgt:

%Vor%

Das Schlüsselstück ist die Datenaktion. Ich möchte den Aufruf an den Event-Handler oben, um zu sagen, es ist "folgen", aber es sagt, es ist immer noch "unfollow".

Die Reihenfolge ist die folgende:

  1. Seite laden, die Datenaktion = 'unfollow'
  2. klicke auf diesen Befehl, es wird ein Anruf getätigt und du folgst diesem Benutzer nicht; Der Callback setzt Data-Action = 'Follow'
  3. Klicken Sie erneut auf diesen Wert, und die Datenaktion wird als "unfollow" und nicht als "follow"
  4. ausgegeben

Wie kann ich jQuery sagen, dass es die Bindungen dieses Ereignisses aktualisiert? Ich dachte, das wäre was $ (Dokument) .on tut.

thx

    
timpone 04.09.2012, 21:06
quelle

1 Antwort

24

Die Attribute data-* & amp; jQuerys .data() Methode ist nicht austauschbar. Verwenden Sie dies, um es zu bekommen:

%Vor%

Sie scheinen die Methode data von jQuery mit den% com_de% -Attributen von HTML5 zu mischen. Dies sind zwei verschiedene Dinge. Sie interagieren nur miteinander, wenn Sie data-* für ein Element aufrufen.

Wenn Sie .data aufrufen, sucht jQuery nach allen .data -Attributen und fügt sie der data-* -Auflistung hinzu. Dies geschieht jedoch nur einmal . Nachfolgende Aufrufe von data sehen nicht die .data -Attribute des Elements an.

Um die jQuery-Dokumente zu zitieren:

  

Die Attribute data-* werden beim ersten Zugriff auf die Dateneigenschaft abgerufen und werden dann nicht mehr abgerufen oder mutiert (alle Datenwerte werden dann intern in jQuery gespeichert).

Da Sie data- verwenden, um es zu setzen, sollten Sie .attr('data-action', 'follow') verwenden, um es zu erhalten.

Hinweis: .attr('data-action') wird kein Element auswählen, für das $('.action[data-action=unfollow]') über jQuerys action festgelegt wurde. Auch hier sind die beiden nicht austauschbar.

    
Joseph Silber 04.09.2012, 21:08
quelle

Tags und Links