Tiếp theo bài này jQuery table sort (github liên kết: https://github.com/padolsey/jQuery-Plugins/blob/master/sortElements/jquery.sortElements.js), tôi đang sắp xếp thành công cột, tuy nhiên nó không hoạt động trong trường hợp rowspan: Ví dụ, trường hợp như thế nàyjQuery sortColumns plugin: Làm thế nào để sắp xếp một cách chính xác với rowspan
Grape 3,096,671M
1,642,721M
Apple 2,602,750M
3,122,020M
Khi tôi bấm vào cột thứ hai, nó cố gắng sắp xếp
Apple 2,602,750M
1,642,721M
Grape 3,096,671M
3,122,020M
(kết quả mong đợi nên nó chỉ nên loại trong mỗi rowspan
012.351.Grape 1,642,721M
3,096,671M
Apple 2,602,750M
3,122,020M
hoặc
Grape 3,096,671M
1,642,721M
Apple 3,122,020M
2,602,750M
)
do đó, hoặc mà như bạn có thể thấy là không đúng, xin vui lòng bất kỳ guru jQuery giúp tôi khắc phục vấn đề này. Đây là mã của tôi
var inverse = false;
function sortColumn(index){
index = index + 1;
var table = jQuery('#resultsTable');
table.find('td').filter(function(){
return jQuery(this).index() == index;
}).sortElements(function(a, b){
a = convertToNum($(a).text());
b = convertToNum($(b).text());
return (
isNaN(a) || isNaN(b) ?
a > b : +a > +b
) ?
inverse ? -1 : 1 :
inverse ? 1 : -1;
},function(){
return this.parentNode;
});
inverse = !inverse;
}
function convertToNum(str){
if(isNaN(str)){
var holder = "";
for(i=0; i<str.length; i++){
if(!isNaN(str.charAt(i))){
holder += str.charAt(i);
}
}
return holder;
}else{
return str;
}
}
Câu hỏi:
1.How để tôi sắp xếp này với rowspan. SỐ ROWSPAN KHÔNG PHẢI LÀ MỘT SỐ. Ví dụ trên cả Grape và Apple có rowpan của 2, nhưng điều này không phải luôn luôn như vậy.
2.Có bất kỳ giải thích cú pháp sau:
return (
isNaN(a) || isNaN(b) ?
a > b : +a > +b
) ?
inverse ? -1 : 1 :
inverse ? 1 : -1;
Vì vậy, tôi có thể thấy rằng nếu một trong hai a hoặc b không phải là một con số, sau đó làm chuỗi so sánh nếu không làm được so sánh số lượng, nhưng tôi không hiểu được
inverse ? -1 : 1 :
inverse ? 1 : -1;
trường hợp thử nghiệm
<table id="resultsTable">
<thead>
<tr>
<th>Fruit</th>
<th onclick="sortColumn(1)">Quantity</th>
<th onclick="sortColumn(2)">Rate</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">Grape</td>
<td>15</td>
<td>5</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
</tr>
<tr>
<td>88</td>
<td>1</td>
</tr>
<tr>
<td>11</td>
<td>3</td>
</tr>
<tr>
<td rowspan="3">Melon</td>
<td>21</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>0</td>
</tr>
<tr>
<td>35</td>
<td>1</td>
</tr>
<tr>
<td rowspan="6">Melon</td>
<td>24</td>
<td>5</td>
</tr>
<tr>
<td>66</td>
<td>2</td>
</tr>
<tr>
<td>100</td>
<td>4</td>
</tr>
<tr>
<td>21</td>
<td>1</td>
</tr>
<tr>
<td>65</td>
<td>3</td>
</tr>
<tr>
<td>2</td>
<td>0</td>
</tr>
</tbody>
<table>
Kết quả mong đợi là gì? –
@ Newbo.O: Chỉ nên sắp xếp trong mỗi hàng. Tôi đã cập nhật câu hỏi của mình với kết quả mong đợi. –
Chỉ sắp xếp trong một hàng hoặc: ** sắp xếp từng nhóm hàng và sau đó sắp xếp các nhóm theo giá trị đầu tiên **? –