2015-12-31 16 views
7

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à true1, các trang web như nấm và vàng sẽ là false1.

Đâ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

+1

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ử. –

+1

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

+0

Điều gì xảy ra khi bạn console.log (o)? –

Trả lời

7

Những dòng này là những vấn đề:

$(o).attr(arr[i].h); 
    $(o).attr(arr[i].c); 

Bạn cần phải cung cấp tên thuộc tính:

$(o).attr("href", arr[i].h); 
    $(o).attr("class", arr[i].c); 
+0

Vấn đề bây giờ là Wikipedia Gold nằm trong cùng một chỗ, nhưng đó là vì tôi chưa thêm logic phụ thêm. Cảm ơn! –

+1

+50 trong một phút! LoL –

+3

@PraveenKumar nó luôn luôn là những siêu đơn giản như thế này quá :) – Pointy

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