如果我有
的元素data-something="+5"
并尝试:
alert($(el).data('something')); //gives 5, not +5...
如何检索原始值?
答案 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()
方法。