我正在使用Javascript对一个表进行排序,该表被他们的子元素拆分为<div>
。代码成功地进行了一种排序,但是我需要添加对升序和降序排序的功能。
我尝试向排序属性中添加一个调用者,该属性表示要单击哪个表头。我将全局变量设置为默认值为1,然后使用if语句在1和2之间翻转,以表示升序或下降。
该表将只排序升序和降序一次,并且似乎依赖于移动其他表标题,然后才能移动下一个表头。
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);
}
发布于 2013-03-22 01:03:46
我会像这样做http://jsfiddle.net/zdCT6/5/
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);
}
简单得多,而且不需要每次都在那里重新设置这些标志,而且如果分支的话,也会少很多。
还请注意trim()调用。您的文本()返回带有前导空格chr的项,它将自动首先移动该项/
https://stackoverflow.com/questions/15565975
复制相似问题