我有这个html-snippet:
<div id="container" data-id="20.20"></div>
使用这个jquery:
$(document).ready(function(){
$("div#container").click(function() {
var foo = $(this).data("id");
console.log( typeof foo ) // returns "number"
foo = String(foo);
console.log(foo) // returns "string"
});
});
所以我的情况:
我需要将变量“foo”作为字符串,因为我想使用Jquery-split-function。
我的问题:
为什么“foo”首先作为“数字”返回,我认为它直接保存为“字符串”?
我的方式是改变变量类型的好方法还是我应该采用其他方式?
答案 0 :(得分:1)
jQuery.data
尝试猜测数据属性的数据类型:
每次尝试都将字符串转换为JavaScript值 (这包括布尔值,数字,对象,数组和null)。一个值 如果这样做不会更改值,则仅转换为数字 表示。例如,“1E02”和“100.000”等同于 数字(数值100)但转换它们会改变它们的数字 表示所以它们被保留为字符串。字符串值“100”是 转换为数字100。
[...]
要将值的属性检索为字符串而不进行任何尝试 转换它,使用attr()方法。
请注意,根据上述规则,值20.2
将转换为数字,但20.20
不会转换。
话虽如此,使用.attr()
获取值而不进行转换。或者,使用以下任何方法将数字(或几乎任何对象)转换为字符串:
expr.toString()
String(expr)
"" + expr
答案 1 :(得分:0)
要分隔小数和整数部分,可以使用按位|
强制数字为整数以删除小数。然后从原始中减去它以获得小数:
var foo = $(this).data("id"); //20.20
var integer = foo | 0; //20
var decimal = foo - integer; //0.20
答案 2 :(得分:0)
对我来说,它最初以字符串形式返回:http://jsbin.com/dobas/1/
也许你用数字设置数据?例如:
$el.data('id', 20.20);
如果是这样,请将其更改为设置字符串,并且可能会以字符串形式返回:
$el.data('id', '20.20');