Từ documentation:
Mọi nỗ lực được thực hiện để chuyển đổi chuỗi thành một giá trị JavaScript (điều này bao gồm các phép toán luận, số, đối tượng, mảng, và null) nếu không nó là trái như một chuỗi. Để lấy thuộc tính của giá trị dưới dạng một chuỗi mà không có bất kỳ nỗ lực nào để chuyển đổi nó, hãy sử dụng phương thức attr().
Bạn có thể sử dụng attr
để tránh phân tích tự động:
var code = $(this).attr('data-prodcode');
Để được chính xác hơn: điều này không nên xảy ra. Và trên thực tế nó không xảy ra trong các phiên bản trước. Dưới đây là đoạn code của jQuery hiện tại (phần thú vị nhất là những nhận xét):
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) {}
Và nó hoạt động trong jQuery 1.8 và 1.9: nó không chuyển đổi chuỗi thành một số nếu chuyển đổi trở lại không sản xuất cùng một chuỗi. Nhưng nó không hoạt động trong jQuery 1.7.
Nguồn
2013-02-18 16:25:25
Đó là vì '.data' cố gắng tự động chuyển đổi giá trị thành số hoặc Booleans khi có thể và chuỗi '11E6' trông giống như [một số trong ký pháp khoa học] (http://en.wikipedia.org/wiki/ Scientific_notation # E_notation) đến một máy tính. – Blazemonger