我们有一些地方的产品代码,例如11E6,它们存储在数据属性(例如数据prodcode)越来越转化为11000000,jQuery的点击函数内检索时,这个“奇怪”的局面。 事情是这样的:
<a data-prodcode="11E6">click</a>
var code = $(this).data('prodcode');
console.log(code); --> 11000000
如何避免这种行为,或有什么可能导致它有什么建议?
我们有一些地方的产品代码,例如11E6,它们存储在数据属性(例如数据prodcode)越来越转化为11000000,jQuery的点击函数内检索时,这个“奇怪”的局面。 事情是这样的:
<a data-prodcode="11E6">click</a>
var code = $(this).data('prodcode');
console.log(code); --> 11000000
如何避免这种行为,或有什么可能导致它有什么建议?
从文档 :
每一个试图将字符串转换为JavaScript值(包括布尔,数字,对象,数组和null),否则它保留为一个字符串。 检索值的属性作为一个字符串,没有任何企图将其转换,使用attr()方法。
您可以使用attr
,以避免自动解析:
var code = $(this).attr('data-prodcode');
更精确地说:这不应该发生。 而事实上,它并没有在过去的版本中出现。 下面是目前的jQuery的(最有趣的部分是注释)的代码:
if ( typeof data === "string" ) {
try {
data = data === "true" ? true :
data === "false" ? false :
data === "null" ? null :
// Only convert to a number if it doesn't change the string
+data + "" === data ? +data :
rbrace.test( data ) ? jQuery.parseJSON( data ) :
data;
} catch( e ) {}
和它的作品在jQuery的1.8和1.9:它不字符串转换为数字,如果回转换不会产生相同的字符串。 但它并没有在jQuery的1.7工作。