Атрибут данных становится целым

Посмотрите этот простой пример на jsfiddle

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

код

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

Результат

00005 turns into:5
S00005 turns into: S00005

Я хотел бы вернуть "00005" и "S00005".

Ответы

Ответ 1

Попробуйте

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

Из документов jQuery

Производится попытка преобразования строки в значение JavaScript (это включает в себя логические значения, числа, объекты, массивы и нуль), в противном случае она остается в виде строки. Чтобы получить атрибут value как строку без какой-либо попытки его преобразования, используйте метод attr().

Ответ 2

Производится каждая попытка преобразовать строку в значение JavaScript (это включает в себя логические значения, числа, объекты, массивы и null) в противном случае он остается как строка. Чтобы получить атрибут value как строку без какой-либо попытки его преобразования, используйте метод attr().

Отсюда: http://api.jquery.com/data/#data-html5

Ответ 3

Я знаю, что это немного старше пост, но другой способ, которым вы можете это сделать, - преобразовать значение атрибута данных в строку:

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

или

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

Некоторые примеры того, как это может работать:

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

Скобки в этом примере должны избегать назначения переменных, поскольку вы не можете напрямую использовать #toString для числа непосредственно: 123.toString(), но вы можете, когда оно назначено переменной или заключено в круглые скобки: (123).toString().

Просто помните, что вы не сможете преобразовать нуль или undefined в строку.

Также происходит что-то интересное с массивами и undefined и нулевыми значениями:

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