2012-04-24 12 views
15

Sprawdź ten prosty przykład on jsfiddleatrybut danych staje się całkowitą

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

kod

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

wynik

00005 turns into:5 
S00005 turns into: S00005 

chciałbym wrócić "00005" i "S00005" .

+0

Niestety @FelixKling, jest ciągiem znaków, ale nie ciąg potrzebne. Mój identyfikator witryny to ciąg "00005" – Larsi

+0

Tak ... Zrozumiałem twoje pytanie, skasowałem mój komentarz. Nieco więcej wyjaśnień byłoby jednak pomocnych;) Na przykład, 'S00005' jest używane do * wymuszenia * zwracania ciągu znaków i to powinno pokazywać, że' 00005' jest konwertowane na liczbę. –

Odpowiedz

19

Spróbuj

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

From the jQuery Docs

Każda próba jest wykonana przekonwertować ciąg na wartość JavaScript (w tym wartości logicznych, liczby obiektów, tablic oraz NULL) w przeciwnym razie pozostaje jako ciąg znaków. Aby pobrać atrybut wartości jako ciąg bez jakiejkolwiek próby jego konwersji, użyj metody attr().

+0

Wielkie dzięki za dostarczenie dokumentu! – Larsi

+0

Dokumenty wyraźnie mówią, że 'attr()' zwraca 'ciąg', ale prosty kod, taki jak' element.attr ('data-text', '12'); text = element.attr ("data-text"); 'zwraca dla mnie liczbę. Co ja robię źle? – jlh

2

Każda próba jest wykonana przekonwertować ciąg na wartość JavaScript (dotyczy to wartości logicznych, liczby obiektów, tablic oraz NULL) inaczej Pozostawia się jako ciąg znaków. Aby odzyskać atrybut wartości jako ciąg bez jakiejkolwiek próby konwersji, użyj metody attr().

stąd: http://api.jquery.com/data/#data-html5

+2

Myślę, że @binarious był szybszy :) – ant7

+0

ok, dzięki mimo to – Larsi

0

Wiem, że to nieco starszy post, ale inny sposób można podejść do tego jest konwersja danych wartości atrybutu na łańcuch:

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

lub

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

Kilka przykładów, jak to może działać:

> (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")}" 

Nawias na przykład są tam, aby uniknąć przypisywania zmiennych, ponieważ nie można korzystać bezpośrednio #toString od liczby bezpośrednio: 123.toString(), ale można, gdy przypisana do zmiennej lub w nawiasach: (123).toString().

Pamiętaj tylko, że nie można przekonwertować wartości null lub undefined na ciąg znaków.

również coś ciekawego dzieje się z tablic i niezdefiniowanych i zerowych wartościach:

> (["bob", 123, true, null, undefined, this]).toString() 
"bob,123,true,,,[object Window]" 
Powiązane problemy