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