열의 정렬 동작을 변경하는 플러그인을 만들려고합니다. 열의 데이터는 <ul>
요소입니다. 목록의 각 <li>
요소 내에는 일부 텍스트와 10 진수가 있습니다. 셀의 목록에서 가장 큰 십진수를 기준으로 표를 정렬하고 싶습니다. 여기에 플러그인을 보여주는 jsfiddle, 그리고 당신이 볼 수있는 두 번째 열을 정렬 할 때, 그것이 제대로 작동하지 않습니다 : 그것은 일 경우Jquery DataTables 맞춤 정렬 플러그인이 작동하지 않습니다.
http://jsfiddle.net/flyingL123/1whzq1w2/3/
는 내림차순 샘해야한다 (97.50)을, 조 (80.50), 마이크 (17.50), 그리고 오름차순 물론 반대해야합니다. 내 디버깅을 기반으로, 플러그인은 각 셀에 대해 올바른 숫자 값을 반환합니다. 테이블이 적절하게 정렬되지 않는 이유를 알고 있습니까?
$.fn.dataTable.ext.order['number-list'] = function (settings, col)
{
return this.api().column(col, {order:'index'}).nodes().map(function (td, i) {
//get all numbers from the cell into an array and parseFloat each one
var nums = $(td).html().match(/(\d+.\d+)/);
if(nums){
nums = nums.map(function(val){return parseFloat(val, 10);});
return Math.max.apply(null, nums);
}
else{
return 0;
}
});
}
이 방법이 효과가 있지만 작동 원리가 확실하지 않습니다. 나는 또한 여기에있는'dom-text' 플러그인을 사용하고있다 : https://datatables.net/plug-ins/sorting/custom-data-source/dom-text. 왜이 정의가 다르게 정의되어 있습니까? 구현하려고 시도한 커스텀 정렬은이'dom-text' 플러그인이하는 것과 똑같은 일을하는 것이 었습니다. 왜 다르게 정의되어 있습니까? – flyingL123
@ flyingL123 - 답변을 완전히 다시 작성했습니다. 왜 당신이 궁금해하는지 이해하십시오. 비록 기능에 관해서는 내 대답이 효과가 있었지만 실제 답변은 새로운 분류 알고리즘을 만들지 않고도 매우 간단하기 때문에 진짜 대답은 아니 었습니다. 좋은 대답은 문제를 스스로 해결해야하며 바퀴를 재발 명하지 않아야합니다. Appearently 내가 첫 번째 대답을했을 때 생각하지 않았습니다 : ( – davidkonrad