jQuery数据值+未正确检索

时间:2011-08-14 22:20:31

标签: jquery html5

如果我有

的元素
data-something="+5"

并尝试:

alert($(el).data('something')); //gives 5, not +5...

如何检索原始值?

2 个答案:

答案 0 :(得分:4)

引用jquery手册,关于使用.data()提取数据属性以进行访问 -

  

每次尝试都将字符串转换为JavaScript值(包括布尔值,数字,对象,数组和null),否则将其保留为字符串。检索   将value的属性作为字符串而不尝试转换它,使用attr()方法。

看起来你的+5被解释为正整数5。

答案 1 :(得分:3)

这似乎是设计上的。

https://github.com/jquery/jquery/blob/master/src/data.js#L314

data = data === "true" ? true :
data === "false" ? false :
data === "null" ? null :
!jQuery.isNaN( data ) ? parseFloat( data ) :
    rbrace.test( data ) ? jQuery.parseJSON( data ) :
    data;

parseFloat,将其强制转换为数字:

parseFloat('+5') == Number(5)

来自http://api.jquery.com/data/

  

要将值的属性检索为字符串而不进行任何尝试   转换它,使用attr()方法。