2012-04-24 5 views
15

Schauen Sie sich dieses einfache Beispiel on jsfiddleDaten Attribut wird integer

<div id ="a" data-siteid="00005">00005 turns into:</div> 
<div id="b" data-siteid="S00005">S00005 turns into: </div> 

Code

$('#a').append($('#a').data("siteid")); 
$('#b').append($('#b').data("siteid")); 

Ergebnis

00005 turns into:5 
S00005 turns into: S00005 

Ich mag würde "00005" und "S00005" zurückzukehren .

+0

Leider @FelixKling, es ist eine Zeichenfolge, aber nicht die Zeichenfolge ich brauchte. Meine SiteID ist tatsächlich die Zeichenfolge '00005' – Larsi

+0

Ja ... Ich habe Ihre Frage verstanden, löschte meinen Kommentar. Ein bisschen mehr Erklärung würde Helfer haben;) Zum Beispiel wird das 'S00005' verwendet, um * force * eine Zeichenkette zurückzugeben und das sollte zeigen, dass' 00005' in eine Zahl umgewandelt wird. –

Antwort

19

Versuchen

$('#a').append($('#a').attr('data-siteid')); 
$('#b').append($('#b').attr('data-siteid')); 

From the jQuery Docs

Jeder Versuch unternommen wird, um die Zeichenfolge zu einem JavaScript-Wert (dies schließt booleans, Zahlen, Objekte, Arrays und null) zu konvertieren sonst wird es links ein Faden. Verwenden Sie die Methode attr(), um das Attribut des Werts als String abzurufen, ohne dass versucht wird, es zu konvertieren.

+0

Vielen Dank für die Bereitstellung der Doc! – Larsi

+0

Die Dokumente sagen klar, dass 'attr()' eine 'string' zurückgibt, aber einfachen Code wie' element.attr ('data-text', '12'); text = element.attr ('data-text'); 'gibt eine Zahl für mich zurück. Was mache ich falsch? – jlh

2

Jeder Versuch unternommen wird, um die Zeichenfolge zu einem JavaScript-Wert (dies schließt booleans, Zahlen, Objekte, Arrays und null) sonst es als String gelassen wird zu konvertieren. Um das Attribut des Werts als Zeichenfolge ohne Versuch, es zu konvertieren, abzurufen, verwenden Sie die Methode attr().

Von hier aus: http://api.jquery.com/data/#data-html5

+2

Ich denke @ binarious war schneller :) – ant7

+0

ok, danke trotzdem – Larsi

0

Ich weiß, das ist ein etwas älteren Beitrag, aber ein anderer Weg, dies nähern kann, ist die Datenattributwert in einer Zeichenfolge zu konvertieren:

$('#a').data("siteid").toString() 

oder

$('#a').data().siteid.toString() 

Einige Beispiele dafür, wie das funktionieren kann:

> (12345).toString() 
"12345" 

> (14.5).toString() 
"14.5" 

> (-14.5).toString() 
"-14.5" 

> "bob".toString() 
"bob" 

> (true).toString() 
"true" 

> ({a: "b"}).toString() 
"[object Object]" 

>(function(){console.log("bob")}).toString() 
"function(){console.log("bob")}" 

Die Klammer in dem Beispiel gibt es Variablen zu vermeiden zuweisen, da Sie nicht direkt #toString auf die Nummer direkt verwenden können: 123.toString(), aber Sie können, wenn es um eine Variable oder eingeschlossen in Klammern zugeordnet: (123).toString().

Denken Sie daran, dass Sie nicht null oder undefined in eine Zeichenfolge konvertieren können.

Auch interessant etwas passiert mit Arrays und undefiniert und Nullwerte:

> (["bob", 123, true, null, undefined, this]).toString() 
"bob,123,true,,,[object Window]" 
Verwandte Themen