Javascript 如何分类<;部门>;s(上升和下降)并识别其状态?

Javascript 如何分类<;部门>;s(上升和下降)并识别其状态?,javascript,Javascript,我正在使用Javascript对一个表进行排序,该表按其子元素拆分为s。代码以一种方式成功排序,但我需要添加升序和降序排序功能。 我尝试向排序属性添加一个调用者,该属性表示正在单击哪个表头。我将全局变量设置为默认值1,然后使用if语句在1和2之间切换,以表示升序或降序 该表将只进行一次升序和降序排序,并且似乎依赖于在移动下一个表头之前移动其他表头 var OrderAuthor=1; 函数sortUsingNestedText(父、子选择器、键选择器、调用者) { var items=pare

我正在使用Javascript对一个表进行排序,该表按其子元素拆分为
s。代码以一种方式成功排序,但我需要添加升序和降序排序功能。

我尝试向排序属性添加一个调用者,该属性表示正在单击哪个表头。我将全局变量设置为默认值1,然后使用if语句在1和2之间切换,以表示升序或降序

该表将只进行一次升序和降序排序,并且似乎依赖于在移动下一个表头之前移动其他表头

var OrderAuthor=1;
函数sortUsingNestedText(父、子选择器、键选择器、调用者)
{
var items=parent.childSelector.sort(函数a,b)
{
var vA=$(keySelector,a).text();
var vB=$(keySelector,b).text();
if(caller.data('order_by')=='author')
{
如果(OrderAuthor==1)
{
OrderAuthor=2;
OrderSubject=1;
OrderDate=1;
返回值(vAvB)?1:0;
}
其他的
{
OrderAuthor=1;
返回值(vA>vB)?-1:(vA
我会这样做

var sortBy=“”
var asc=真
函数sortUsingNestedText(父、子选择器、键选择器){
if(sortBy==keySelector){asc=!asc}else{asc=true}
sortBy=键选择器
var items=parent.childSelector.sort(函数a,b){
var vA=$.trim($(keySelector,a).text());
var vB=$.trim($(keySelector,b).text());
回报率((vAvB)?1:0)*(asc?1:-1);
});
父项。附加(项);
}
方法更简单,并且您不需要每次都重置这些标志,而且如果进行分支,则会大大减少


还要注意trim()调用。您的text()返回带有前导空格chr的项目,这将自动首先移动该项目/

嘿,这似乎效率更高。但是,它仍然只允许一轮升序和降序排序,而不是无限排序。你能将我链接到更新吗。代码似乎是一样的。还有,您更改了什么?我更改了asc var get的第一行,其中根据当前排序字段指定了true或false。以前的方式只会从真变假,然后再变真。我也更新了网址。应该是/5/
 var OrderAuthor = 1;

function sortUsingNestedText(parent, childSelector, keySelector, caller)
{
        var items = parent.children(childSelector).sort(function(a, b)
        {
                var vA = $(keySelector, a).text();
                var vB = $(keySelector, b).text();
                if (caller.data('order_by') == 'author')
                {
                        if (OrderAuthor == 1)
                        {
                                OrderAuthor = 2;
                                OrderSubject = 1;
                                OrderDate = 1;
                                return (vA < vB) ? -1 : (vA > vB) ? 1 : 0;
                        }
                        else
                        {
                                OrderAuthor = 1;
                                return (vA > vB) ? -1 : (vA < vB) ? 1 : 0;
                        }
                }
        });
        parent.append(items);
}
var sortBy = ""
var asc = true

function sortUsingNestedText(parent, childSelector, keySelector) {
     if (sortBy == keySelector) { asc = !asc } else { asc = true }
     sortBy = keySelector
     var items = parent.children(childSelector).sort(function(a, b) {
        var vA = $.trim($(keySelector, a).text());
        var vB = $.trim($(keySelector, b).text());        
        return ((vA < vB) ? -1 : (vA > vB) ? 1 : 0) * (asc ? 1 : -1);           
    });

    parent.append(items);
 }