ドキュメントから:
文字列を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で機能します。逆変換で同じ文字列が生成されない場合、文字列は数値に変換されません。しかし、jQuery1.7では機能しませんでした。