2016-10-02 2 views
-3

Ich habe eine Variable s, die ZeichenfolgeJQUERY, wie man Daten auf HTML-Inhalt setzt?

'<div>hello world</div>' 

(Ich kann nicht den Inhalt von s aus)

Ich möchte Datensatz auf s Ich habe versucht, enthält:

$(s).data('value', 50); 
$($(s)).data('value', 50); 

Beliebig Idee?

s = '<div>hello world</div>'; 
s = $(s).data('value', 50); // works now !!! 
console.log($(s).data('value')); 
+0

s ist ein AJAX-Ergebnis! – yarek

+0

ganzes Problem ergibt sich aus dem Erstellen eines neuen Objekts jedes Mal aus der gleichen ursprünglichen Zeichenfolge. Diese Zeichenfolge wird nicht geändert – charlietfl

Antwort

4

Ihr erstes Beispiel ($(s).data('value', 50);) funktioniert einwandfrei. Die Aktualisierung im DOM wird nicht angezeigt, da jQuery data Attribute in einem internen Cache für eine bessere Leistung enthält. Sie können es durch das Lesen der Wert wieder heraus gearbeitet überprüfen:

var $div = $('div'); 
 

 
console.log('before: ' + $div.data('value')); 
 
$div.data('value', 50); 
 
console.log('after: ' + $div.data('value'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>hello world</div>

Wenn Sie das data-value Attribut im DOM aktualisieren würde es vorziehen, attr() verwenden, wie folgt aus:

var $div = $('div'); 
 
$div.attr('data-value', 50);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>hello world</div>

Verwenden Sie den DOM-Inspektor um die Wirkung des obigen Codes zu sehen.

+0

Mein erstes Beispiel funktioniert NOY gut: $ (s) .data ('Wert') gibt mir UNDEFINED! – yarek

+2

In diesem Fall geben Sie bitte ein vollständiges Beispiel Ihres Codes an. Das kleine, das du gegeben hast, ist fast nutzlos. Überprüfen Sie auch die Konsole auf Fehler, da es keinen Grund gibt, dass das oben genannte nicht funktioniert. –

0

Der einzige Weg, können Sie machen, was Sie Arbeit showng ist eine Referenz auf das ursprüngliche Objekt zu speichern ... dann den Wert erhalten von diesem Objekt

var $s = $(s).data('value', 500); 
console.log($s.data('value')); 

Was Sie derzeit tun, ist die Schaffung von zwei Objekten mit der gleichen ursprünglichen Zeichenfolge und es gibt keine Referenz zwischen diesen Objekten

$(s) == $(s)// false