2010-09-08 35 views
5

Trang web của tôi là XHTML 1.1 và tôi đã thêm thuộc tính 'rel' vào các thẻ <li><div> trên trang của mình, để lưu trữ dữ liệu cho tập lệnh jQuery trên trang. Khi xác thực trang của tôi, tôi gặp lỗi: "không có thuộc tính 'rel'". Vì vậy, cách tốt nhất để lưu trữ dữ liệu tùy ý trong các thẻ HTML là gì?Thêm dữ liệu vào thẻ XHTML

Tôi đang làm việc trên trang nhận xét cho trang web của mình. Khi một bình luận được nhập, nó được POST thông qua AJAX, trả về JSON của tất cả các chú thích. Sau đó tôi xem xét các giá trị 'rel' để xem các nhận xét nào đã có trên trang và chỉ thêm các nhận xét mới.

Mã jQuery hoạt động tốt, chỉ là thuộc tính 'rel' không xác thực.

+1

Tại sao bạn không trả về JSON của nhận xét mới? – davehauser

+0

@Dave, tôi đã nghĩ về điều đó, nhưng nếu ai đó đăng nhận xét giữa thời gian bạn mở trang và thời gian bạn đăng nhận xét. Tôi muốn tất cả các ý kiến ​​mới được tải. –

+0

Xin cảm ơn các bạn. Tôi không biết tại sao tôi thậm chí còn sử dụng 'rel' ngay từ đầu, tôi thực sự nên sử dụng 'id' (hay 'name'). Tôi thích ý tưởng mở rộng XHTML để hỗ trợ các thuộc tính mới ... hoặc tôi chỉ có thể chuyển sang HTML5. –

Trả lời

7

Mặc dù không phải là thông số XHTML, bạn có thể sử dụng các thuộc tính data- * được bao gồm trong thông số kỹ thuật của HTML5.

http://html5doctor.com/html5-custom-data-attributes/

Nếu bạn muốn duy trì đầy đủ XHTML 1.1 compliant, bạn sẽ cần phải tạo ra một lược đồ và bao gồm không gian tên của nó trong các yếu tố html, nơi mà các schema định nghĩa các thuộc tính bạn muốn sử dụng, và các yếu tố mà họ áp dụng.

Extending XHTML

+0

+1 Bạn có thể bắt đầu sử dụng HTML5 Doctype ngay hôm nay, tất cả trình duyệt sẽ xử lý chính xác điều này. – davehauser

+0

Được chọn làm câu trả lời cho bài đăng Mở rộng XHTML, gọn gàng. –

1

rel không phải là thuộc tính hợp lệ cho li, bạn nên sử dụng id thay vì thay thế thuộc tính và nó cũng hợp lệ tại đó.

+0

Tôi không chắc tại sao tôi không làm điều này để bắt đầu. –

0

Tôi nghĩ rằng nó đi ngược lại tinh thần của XHTML để lưu trữ "tùy ý" dữ liệu trong thẻ. Thay vào đó, bạn nên sử dụng phương thức jQuery.data.

+1

Chỉ cần đăng cùng một câu trả lời và xóa nó. Nếu tôi hiểu câu hỏi một cách chính xác, dữ liệu phải có trong HTML. Nếu điều này không phải là trường hợp thì bạn có thể lưu trữ dữ liệu trong một biến và sẽ không cần thêm nó vào một phần tử HTML. – davehauser

0

JQuery dường như thích các lớp học như một cách để lưu trữ trạng thái cho các phần tử html khác nhau.

Một ví dụ là cách Giao diện người dùng jQuery sử dụng lớp ui-state-active để xác định tab nào hiện được chọn.

Một lợi ích của phương pháp này là bạn có thể dễ dàng chọn các thành phần theo các trạng thái khác nhau mà bạn đang tìm kiếm như thế nào.

Xin nhắc lại, bạn có thể thêm (hầu như) bao nhiêu lớp vào phần tử theo ý muốn và chỉ tách chúng theo khoảng trắng.

<li class="client_data already_added red_text etc">Bob</li> 
Các vấn đề liên quan