【发布时间】:2020-11-03 17:06:15
【问题描述】:
我有一个可以进行基本数字排序的函数,但我想要一些可以像这样对字母数字数据进行排序的函数:
1 Alpha
2 Beta
3 Delta
Romeo 1
Romeo2
Romeo 3
你可以运行下面的代码,或者有一个小提琴,现在只有 Age 按钮在工作,Name 和 Room 不工作。
https://jsfiddle.net/goldencarers/hfy7wega/
function clientSort(column,direction)
{
var $divs = $(".client");
if (direction=='asc')
{
var alphaDivs = $divs.sort(function (a, b) {
return $(a).data(column) - $(b).data(column);
});
$(".list").html(alphaDivs);
}
else
{
if (direction=='desc')
{
var alphaDivs = $divs.sort(function (a, b) {
return $(b).data(column) - $(a).data(column);
});
$(".list").html(alphaDivs);
}
}
}
$(document).ready(function()
{
$('.sort_clients').click(function(e)
{
var column = $(this).data('column');
var direction = $(this).data('direction');
console.log(column + ' ' + direction);
if(direction === 'asc')
{
$(this).data('direction', 'desc');
}
else
{
$(this).data('direction', 'asc');
}
clientSort(column,direction);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<button class="sort_clients" data-column="name" data-direction="asc">Name</button>
<button class="sort_clients" data-column="age" data-direction="asc">Age</button>
<button class="sort_clients" data-column="room" data-direction="asc">Room</button>
<div class="list">
<div class="client" data-name="john" data-age="50" data-room="1 Alpha">John, 50, 1 Alpha</div>
<div class="client" data-name="susan" data-age="80" data-room="2 Beta">Susan, 84, 2 Beta</div>
<div class="client" data-name="brad" data-age="70" data-room="3 Delta">Brad, 70, 3 Delta</div>
<div class="client" data-name="margaret" data-age="45" data-room="Romeo 1">Margaret, 45, Romeo 1</div>
<div class="client" data-name="steph" data-age="75" data-room="Romeo 3">Steph, 75, Romeo 3</div>
<div class="client" data-name="matt" data-age="65" data-room="Romeo2">Matt, 65, Romeo2</div>
</div>
【问题讨论】:
-
您的排序标准是什么?预期结果是什么?
-
抱歉,我没听懂,据我所知,将其更改为 strA > strB 或反之亦然无济于事。
-
你认为
strA - strB会返回什么? -
格式是
NUMBER[SPACE]STRING和STRING[SPACE]NUMBER吗?
标签: javascript jquery sorting