Jquery - 在拆分之前转换类型

时间:2014-04-12 18:49:50

标签: javascript jquery variables types split

我有这个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。

我的问题:

  1. 为什么“foo”首先作为“数字”返回,我认为它直接保存为“字符串”?

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

3 个答案:

答案 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');