2012-10-18 48 views
6

thể trùng lặp:
jQuery .attr retrieving custom attribute returns undefinedTạo một thuộc tính mới với jQuery

Tôi đã có một vấn đề lạ, nhưng tôi hy vọng Tôi chỉ làm điều gì đó ngu ngốc. Tôi đang cố gắng để tạo ra một thuộc tính mới vào một yếu tố <img> sử dụng jQuery, và dòng này:

$(selector).attr('selected', 'no'); 

Khi tôi kiểm tra DOM trong Chrome, tôi chỉ thấy selected = "chọn", không có vấn đề gì tôi đặt có giá trị đối với.

Chỉ một số thông tin bổ sung: Tôi không thể sử dụng các giá trị boolean, vì tôi cần theo dõi các giá trị thuộc tính "Có", "Không" và "Một phần". Tôi đang gọi một hàm JS từ sự kiện "onClick" của chính img và chuyển thông số this làm tham số. Tôi đã kiểm tra đối tượng trong phương thức và đối tượng phải được truyền; thực tế là các thuộc tính được thiết lập (ngay cả khi đến giá trị sai) cũng hỗ trợ này.

Tôi đã chết chắc chắn tôi đang làm điều gì đó ngu ngốc ở đây ... Mọi lời khuyên sẽ được đánh giá cao.

Trả lời

11

Đã chọn đã là một thuộc tính trong tiêu chuẩn HTML, do đó bạn không thể tạo thuộc tính tùy chỉnh có cùng tên. Trong trường hợp đó, bạn nên sử dụng thuộc tính data- thay thế và tạo một thuộc tính data-selected chẳng hạn.

Trong jQuery, bạn xử lý các thuộc tính dữ liệu tùy chỉnh bằng cách sử dụng phương thức .data().

Thuộc tính dữ liệu tùy chỉnh được mô tả trong thông số HTML5 here.

5

bạn có thể chèn một tùy chỉnh data-* thuộc tính như vậy

$(selector).data('selected', 'no'); 

yếu tố bạn sẽ thiết lập một thuộc tính data-selected

tài sản
1

Một DOM là khác với một thuộc tính DOM;)

tôi muốn đề nghị sử dụng $(selector).data() cho trường hợp sử dụng của bạn.

2

Nếu bạn cần đính kèm dữ liệu tùy ý vào một phần tử, hãy sử dụng .data(), không phải .attr().

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