24

在 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”。

4

3 回答 3

38

尝试

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

来自 jQuery 文档

每次尝试都将字符串转换为 JavaScript 值(这包括布尔值、数字、对象、数组和 null),否则将其保留为字符串。要将值的属性作为字符串检索而不进行任何转换,请使用 attr() 方法。

于 2012-04-24T11:33:50.173 回答
4

每次尝试都将字符串转换为 JavaScript 值(这包括布尔值、数字、对象、数组和 null),否则将其保留为字符串。要将值的属性作为字符串检索而不进行任何转换,请使用 attr() 方法。

从这里:http ://api.jquery.com/data/#data-html5

于 2012-04-24T11:35:07.477 回答
-2

我知道这是一篇稍旧的帖子,但您可以采用另一种方法将数据属性值转换为字符串:

$('#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()

请记住,您将无法将 null 或 undefined 转换为字符串。

数组以及未定义和空值也会发生一些有趣的事情:

> (["bob", 123, true, null, undefined, this]).toString()
"bob,123,true,,,[object Window]"
于 2017-01-04T03:31:59.690 回答