2012-01-08 28 views
7

http://jsfiddle.net/nicktheandroid/6BAfH/1/Sắp xếp đơn giản theo tập lệnh số, 3 dòng, không sắp xếp chính xác vài li vừa rồi, tại sao?

Các yếu tố danh sách được sắp xếp tương ứng theo số trong khoảng của chúng. Tại sao nó lại là vài con số cuối cùng không đúng thứ tự? Tôi bối rối.

Jquery

function sortEm(a,b){ 
    return parseInt($('span', a).text()) < parseInt($('span', b).text()) ? 1 : -1; 
} 

$('li').sort(sortEm).prependTo($('ul#test')); 

HTML

<ul id="test"> 

    <li> Cups 
     <span>12</span> 
    </li> 

    <li> Plates 
     <span>18</span> 
    </li> 

    <li> Forks 
     <span>03</span> 
    </li> 

    <li> Knives 
     <span>08</span> 
    </li> 

    <li> Bowls 
     <span>55</span> 
    </li> 
</ul> 
+0

FYI: bạn có thể sử dụng 'trở parseInt ($ ('tuổi', b) .text()) - parseInt ($ ('tuổi', a) .text())' – Stefan

+1

Sử dụng parseFloat: http : //jsfiddle.net/6BAfH/3/ – noob

+0

Stefan, nó vẫn yêu cầu cơ số, vì vậy mã của bạn nhận được lỗi tương tự như của tôi. Tôi nghĩ parseFloat là con đường để đi. –

Trả lời

13

Chào mừng bạn đến với thế giới của số bát phân.

Nếu chuỗi đầu vào bắt đầu bằng "0", thì kết quả là tám (bát phân). Tính năng này không chuẩn và một số triển khai cố ý không hỗ trợ tính năng này (thay vì sử dụng cơ số 10). Vì lý do này luôn luôn chỉ định một cơ số khi sử dụng parseInt.

Sử dụng cơ số để căn cứ 10 với parseInt.

parseInt($('span', a).text(), 10) 
+0

ah đúng vậy, tuyệt vời, cảm ơn ngài. –

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