Phương pháp .data
không làm thay đổi các thuộc tính data-
HTML; nó thay đổi một biến mà jQuery lưu trữ nội bộ.
Nếu bạn thực sự cần/muốn thay đổi thuộc tính data-
, làm như vậy một cách rõ ràng với phương pháp .attr()
:
$(el).attr('data-original-title', str);
Tuy nhiên, này sẽ không làm thay đổi giá trị trả về bởi .data
. jQuery sẽ tìm nạp giá trị đó từ thuộc tính HTML data-
HTML chỉ khi nó không thể tìm thấy giá trị được lưu trữ nội bộ. Nếu bạn truy xuất lại $(el).data('original-title')
sau khi thay đổi thuộc tính HTML, bạn sẽ thấy nó không thay đổi.
Nếu điều này là một vấn đề, hãy sử dụng phương pháp .removeData()
để xóa giá trị được lưu trữ nội bộ. Lần sau khi bạn sử dụng .data()
, jQuery sẽ thấy rằng nó bị thiếu và truy xuất thuộc tính HTML data-
.
Hãy xem: http://jsfiddle.net/mblase75/LHCUK/
HTML:
<p id="p" data-title="blah"></p>
jQuery:
console.log($('#p').data('title')); // returns "blah"
// alter the attribute directly
$('#p').attr('data-title','whooo'); // data-title="whooo"
// test if .data is changed
console.log($('#p').data('title')); // still returns "blah"
// delete the .data() value
$('#p').removeData('title');
// now fetch it again -- it will retrieve the new data- attribute
console.log($('#p').data('title')); // returns "whooo"
Bây giờ, trong thực tế, bạn không nên phải lo lắng về điều này. Chỉ cần nhớ rằng thuộc tính data-
thể hiện giá trị ban đầu của biến số .data()
và không nhất thiết là giá trị hiện tại của biến đó và bạn sẽ ổn.
Nói tóm lại: Phương pháp .data()
lấy một giá trị từ các phần tử HTML lần khi tài liệu được nạp, và sẽ không làm như vậy một lần nữa chừng nào biến được lưu trữ nội bộ.
Phương thức ['.data'] (http://api.jquery.com/data) không thay đổi thuộc tính HTML của dữ liệu'; nó thay đổi một biến mà jQuery lưu trữ nội bộ. – Blazemonger
Không có đủ thông tin để trả lời câu hỏi này. Utilities.ApplyTooltips làm gì? Đánh dấu trông như thế nào? – Joe
Ngữ cảnh nhiều hơn một chút sẽ hữu ích. 'Dữ liệu' trông như thế nào và' ApplyTooltips' làm gì? –