2014-04-12 82 views
0

之前转换型我有这样的HTML片段:jQuery的 - 劈裂

<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" 

    }); 
}); 

所以我的情况:

我需要的变量 “富” 到是字符串,因为我想使用Jquery分裂函数。

我的问题:

  1. 为什么“富”首先返回一个“数字”,我认为这是直接保存为“字符串”?

  2. 我的方法是改变变量类型的好方法,还是应该用其他方法?

问候!!

+4

考虑使用.attr(“数据ID”),如果你想未分类的价值。 – Mikhail

+0

你在这里给出了最好的答案。谢谢!! – user3527480

回答

1

jQuery.data尝试猜测数据属性的数据类型:

每个试图将字符串转换为JavaScript值 (这包括布尔值,数字,对象,数组和null)。值 只会转换为数字,如果这样做不会更改值的 表示形式。例如,“1E02”和“100.000”与 数字(数值100)等效,但转换它们会改变它们的 表示形式,因此它们保留为字符串。字符串值“100”是 转换为数字100。

[...]

要检索值的属性作为字符串没有任何企图 转换它,使用attr()方法。

注意,根据上述规则,该值20.2将被转换为一个数字,但20.20将不被转换

话虽如此,使用.attr()抢没有转换的价值。或者,使用以下方法来转换一个号码(或几乎任何对象)字符串:

expr.toString() 
String(expr) 
"" + expr 
0

为了区分小数和整数部分,你可能会迫使数是使用位整数|删除小数。然后从原始减去它得到十进制:

var foo = $(this).data("id"); //20.20 
var integer = foo | 0;  //20 
var decimal = foo - integer; //0.20 
0

对我来说,它回来作为字符串开始:http://jsbin.com/dobas/1/

也许你正在与一些设置数据?例如:

$el.data('id', 20.20); 

如果是的话,改变这个设置一个字符串,也许它会回来作为一个字符串:

$el.data('id', '20.20');