我有一个 parentdiv
的集合,它们根据它们的唯一订单号标记id
,比如,<div id='parent_uniqueID'>
。它们每个都有包含订单信息的子 div:订单号(同上)、名称和订单日期(mm / dd / yy)。
我正在尝试根据这些列中的每一列对这些父 div 进行排序。
它很容易按订单号排序并重新排列父 div。我对它们进行排序,然后使用 $('#parent_' + order_number);` 之类的东西选择父 div,然后将它们附加到页面上。字母数字也很简单;在字母数字字符串的末尾,我附加了顺序,然后再对其进行排序。这很方便,因为这样如果两个订单具有相同的名称,则父 div 默认按订单号排序。
我不知道如何,一旦完成按日期排序,区分哪个日期属于哪个父 div,以便我可以通过 抓取父 divids
并在页面上重新排列它们。
当我试图理解数字排序时,我收到了这个非常好的解决方案,我正在尝试适应日期:
$('.sortable').click(function () {
if ($(this).hasClass('sortable_date')) {
var sort_order = sort_class_distribution($(this)),
sort_column = this.id.replace("header_", "") + "_div",
content2 = $('#currentOrdersContent2'),
date_holder = "",
i = 0;
var sorted = $('.' + sort_column).map(function () {
date_holder = $.trim($(this).text());
//get order number from parent div
//only_numbers function strips out everything but numbers
cur_order = only_numbers($(this).parents('.order_details_bg_trigger').attr('id'));
//check that the text is not "Not given" or "Unavailable"
if (date_holder.indexOf("/")) {
cur_date = date_holder.split(" / ");
//change the text string into a proper javascript date
return new Date(cur_date[2], cur_date[0] - 1, cur_date[1]);
} else {
//if it is 'Not given', assign it today's date
return new Date();
}
}).toArray().sort(sort_order = "asc" ? date_sort_asc : date_sort_desc);
//change javascript date back to mm / dd / yy format
//weak attempt to match sorted dates with dates contained in table
$.each(sorted, function (i, item) {
cur_date = ('0' + (item.getMonth() + 1)).slice(-2) + ' / ' + ('0' + item.getDate()).slice(-2) + ' / ' + item.getFullYear();
});
}
});
这些是日期排序函数: 来源:https ://gist.github.com/1772996
function date_sort_asc(date1, date2) {
if (date1 > date2) return 1;
if (date1 < date2) return -1;
return 0;
}
function date_sort_desc(date1, date2) {
if (date1 > date2) return -1;
if (date1 < date2) return 1;
return 0;
}
欢迎任何有关如何执行此操作或新模式的建议。谢谢!