2014-04-12 108 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');