Tag: long

jQuery data() treating string as number

Posted by – July 3, 2014

自從 HTML5 開始推廣將自定義參數以 data- 型式標記後,自然也習慣地用 jQuery 的 data() function 來取值。

直到今天碰到一個很奇妙的狀況才注意到 jQuery 會將 data() 取回的資料做轉型。

HTML 長這樣…

<div data-mobile-phone="0919123456"></div>

JS 長這樣…

alert($('div').data('mobile-phone'));

每次跳出來的視窗內容都是 919123456,顯然被當成 int 處理了。

Google 了一會才發現 jQuery 文件寫了一行....

To retrieve the value's attribute as a string without any attempt to convert it, use the attr() method.

這沒熟讀文件還真的不知道,所以 JS 部份應改寫為...

alert($('div').attr('data-mobile-phone'));

才會得到正確的 0919123456。