Tôi đang cố gắng sắp xếp lại một số thông tin được tạo bởi mã phía máy chủ. Máy chủ được gắn cho bộ nhớ, và tất cả các sắp xếp và hiển thị sẽ cần phải được xử lý phía máy khách với javascript/jquery. Html là dọc theo dòng của ...Sắp xếp các yếu tố dựa trên lớp CSS và văn bản không hoạt động
<div>
<a href="https://en.wikipedia.org" class="AccessSitesLinks true 1">Wikipedia Home</a>
<a href="https://en.wikipedia.org/wiki/Gold" class="AccessSitesLinks false 1">Wikipedia Gold</a>
<a href="https://google.com" class="AccessSitesLinks true 2">Google Home</a>
<a href="https://mail.google.com/" class="AccessSitesLinks false 2">Google Mail</a>
<a href="https://en.wikipedia.org/wiki/Mushroom" class="AccessSitesLinks false 1">Wikipedia Mushrooms</a>
<a href="https://facebook.com" class="AccessSitesLinks true 3">FaceBook Home</a>
<a href="https://facebook.org/about" class="AccessSitesLinks false 3">FaceBook About</a>
</div>
Đây là fiddle tôi cơ bản dở dang https://jsfiddle.net/ydc6ywuz/1/ Mục tiêu tổng thể là để sắp xếp AccessSitesLinks true
là trang web gốc. Có nghĩa là bất kỳ lớp css nào là false
nên được nối vào trang gốc dựa trên số sau false
. Ví dụ tốt nhất là Wikipedia Home là true
và 1
, các trang web như nấm và vàng sẽ là false
và 1
.
Đây không phải là vấn đề của tôi. Khi tôi chạy mã Javascript này. Các loại hoạt động hoàn hảo. nhưng giá trị href vẫn giữ nguyên. Mặc dù chúng đúng trong phần Console.log.
function setFields() {
var sortSite = $('.AccessSitesLinks.true');
var arr = sortSite.map(function(_, o) {
return {
t: $(o).text(),
h: $(o).attr('href'),
c: $(o).attr('class')
};
}).get();
arr.sort(function(o1, o2) {
return o1.t > o2.t ? 1 : o1.t <o2.t ? -1: 0;
});
sortSite.each(function(i, o) {
console.log(i);
$(o).text(arr[i].t);
$(o).attr(arr[i].h);
$(o).attr(arr[i].c);
console.log(arr[i].h);
console.log(arr[i].c);
});
Edit: Tôi đã thử làm nhưng điều này không làm việc của router ReferenceError: không hợp lệ lef tay bên trong phân
Bạn có thể sửa đổi HTML theo bất kỳ cách nào không? Điều này sẽ dễ dàng hơn rất nhiều nếu bạn sử dụng các thuộc tính 'data- *' thay vì các lớp để tổ chức các phần tử. –
Khi bạn thiết lập * các thuộc tính trong vòng lặp '.each()', bạn phải cung cấp tên thuộc tính cũng như giá trị. – Pointy
Điều gì xảy ra khi bạn console.log (o)? –