2009-08-26 17 views
6

Vâng, tôi thừa nhận: Tôi đã sử dụng rộng rãi jQuery.attr để lưu trữ dữ liệu tùy chỉnh trong các phần tử DOM trong nhiều, nhiều tập lệnh. Tôi tự hỏi nếu chuyển đổi tất cả các kịch bản của tôi để sử dụng jQuery.data thay vì jQuery.attr. Theo như tôi hiểu, những ưu điểm của jQuery.data là:Sử dụng jQuery.data

  • sản xuất gọn gàng và hợp lệ mã HTML
  • có thể lưu trữ bất kỳ loại dữ liệu (đối tượng, mảng, ...) trên các yếu tố

Ưu điểm chính của thuộc tính tùy chỉnh bao gồm:

  • Nếu trang WEB không HTML nghiêm ngặt, tôi có thể sản xuất mã HTML với các thuộc tính tùy chỉnh trên máy chủ
  • Trong firebug thật dễ dàng để kiểm tra mã HTML của tôi trong việc tìm kiếm các thuộc tính tùy chỉnh của tôi

Ai đó có thể cho tôi biết nếu tôi bỏ lỡ điều gì đó hoặc có vấn đề gì khiến jQueryData thích hợp hơn?

Trả lời

5

Bạn nhận được khá nhiều. Nhưng bạn có biết mỗi thuộc tính HTML không? Có rất nhiều thuộc tính được sử dụng bởi trình đọc màn hình và các công cụ khả dụng khác không phải là tiêu chuẩn (chưa). Điều gì sẽ xảy ra khi bạn vô tình sử dụng thuộc tính role và trình đọc màn hình chọn tùy chọn đó? Sử dụng $.data không chỉ neater, nó an toàn hơn cho bạn và có ý nghĩa hơn.

EDIT: Tôi đã học được điều gì đó đêm qua phù hợp với câu hỏi này. Trong HTML5, bạn ca chỉ định các thuộc tính tùy chỉnh để lưu trữ dữ liệu. Các thuộc tính tùy chỉnh này phải được chỉ định bằng tiền tố "data-". Xem the spec để biết thêm thông tin chi tiết. Điều này có nghĩa là bạn không phải quay trở lại và thay đổi tất cả các mã cũ của bạn, bởi vì bạn sẽ không bao giờ phải lo lắng về sự chồng chéo với các thuộc tính khác nếu bạn tiền tố với "data-". Tuy nhiên, nếu bạn cần lưu trữ nhiều loại dữ liệu phức tạp hơn so với chuỗi, hãy sử dụng $.data.

1

Tôi nghĩ rằng bạn không bỏ lỡ bất cứ điều gì nhưng lưu trữ dữ liệu trên các thuộc tính phần tử dom luôn luôn là một thực hành xấu vì vậy tôi nghĩ bạn nên sử dụng hàm $ .data.

+0

Chăm sóc để xây dựng? Đối với tôi, tôi không cảm thấy đúng khi làm như vậy, nhưng tôi không chắc tại sao. –

Các vấn đề liên quan