Whats cách tốt nhất để tăng giá trị trong một đối tượng jQuery .data()
là gì?jQuery .data(): có thể tăng (++ hoặc -) không?
Trả lời
này trông hơi kỳ quặc, nhưng theo các tài liệu .data()
trả về tất cả các lĩnh vực dữ liệu như một đối tượng, vì vậy bạn có thể thay đổi giá trị của nó trực tiếp:
$('#id').data('counter', 0);
cả hai tùy chọn làm việc:
$('#id').data().counter++;
$('#id').data()['counter'] += 5;
Lấy dữ liệu trả về giá trị dự kiến:.
alert($('#id').data('counter')); // 6
Tôi nghĩ rằng bạn sẽ phải đọc các giá trị và viết nó trở lại, vì vậy:
$(element).data('yourKey', $(element).data('yourKey') + 1);
Sau khi tất cả, data()
là một cuộc gọi chức năng, và incrementing kết quả sẽ không sửa đổi các giá trị riêng của mình, mà ngồi trong một cấu trúc dữ liệu jQuery bên trong.
var data = parseInt ($.data("data-attr")) + 1;
$.data("data-attr",data);
Hoặc, nếu bạn kiểm soát những gì bạn đang lưu trữ, lưu trữ một tham chiếu đối tượng, do đó bạn có thể sửa đổi các giá trị trên đối tượng trực tiếp sử dụng ++
:
var $elem = $('<div>');
$elem.data('something', {value:1});
$elem.data('something').value++;
console.log($elem.data('something').value); // 2
Cảm ơn! Trong khi cách của tôi làm việc trong trường hợp cụ thể này, bạn là cách JavaScripty hơn để làm điều đó, và là câu trả lời đúng cho trường hợp chung. Bạn thậm chí có thể ngắn hơn nếu bạn giữ tham chiếu: 'var v = {value: 1}; $ elem.data ('cái gì đó', v); /*...*/ v.value ++; ' – Kobi
Nó đơn giản như tăng một biến, chỉ cần lưu trữ các giá trị .data(), tăng nó và lưu nó lại trong
Giả sử bạn có một số được đặt trong biến số liệu NumbeR.
var myNumber = $(selector).data('NumbeR');
$(selector).data('NumbeR', myNumber++)
- 1. javascript: chọn tất cả các phần tử có thuộc tính "data-" (không có jQuery)
- 2. TẠO CHỨC NĂNG lỗi "Chức năng này không có DETERMINISTIC, NO SQL hoặc READS SQL DATA"
- 3. Các mục danh sách có thể sắp xếp/có thể kéo được mà không có jQuery UI (hoặc jQuery?)
- 4. Cython có thể tăng tốc mảng lặp đối tượng không?
- 5. WCF Data Services hoặc Entity Framework
- 6. Nhân viên Web có tăng (hoặc giảm) bảo mật không?
- 7. Bộ chọn jQuery có "và" và "hoặc"
- 8. Có thể tăng tốc độ Wordnet Lemmatizer không?
- 9. Có thể thực hiện menu thả xuống không có Javascript hoặc Jquery
- 10. jQuery lưu trữ dữ liệu bằng .data() như thế nào?
- 11. Không thể lấy JSONP làm việc với WCF Data Services
- 12. Có thể tăng tốc độ python IO không?
- 13. Core-Data iPhone: không thể định vị một NSManagedObjectModel
- 14. tăng không có lập luận
- 15. Cách thích hợp để kiểm tra giá trị .data() cụ thể trong một đối tượng jQuery?
- 16. Latch có thể được tăng lên
- 17. Có thể tăng tốc các tạo tác maven không?
- 18. git tôi có thể tăng tốc độ cam kết không?
- 19. Bạn có thể tăng hằng số biên dịch không?
- 20. Có thể tăng tốc độ tổng() trong MySQL không?
- 21. Có thể tăng/giảm vòng lặp cho nhiều lần không?
- 22. lỗi nghiêm trọng C1083: Không thể mở bao gồm file: 'tăng/config.hpp': Không có tập tin hoặc thư mục
- 23. jQuery-UI: có thể thay đổi kích thước - cách tăng kích thước cạnh có thể kéo được?
- 24. Rspec không hoạt động hoặc không tăng lương?
- 25. jQuery có thể dựa vào không?
- 26. Có 'trọng tâm' trong JavaScript (hoặc jQuery) không?
- 27. jQuery $ .ajax hoặc $ .load có cho phép responseType arrayBuffer không?
- 28. Tăng tốc jQuery AutoComplete (danh sách dài không thể tránh khỏi)
- 29. Có thể chạy jQuery ở phía máy chủ không?
- 30. Jquery-ui có thể kéo và động Jquery-ui có thể kéo được không?
+1 Đẹp bắt !! – Reigel
Do hiệu suất bạn nên tránh gọi dữ liệu hai lần, vì vậy hãy sử dụng dữ liệu này thay thế: http://stackoverflow.com/a/5656660/318765 – mgutt