使用jQuery按日期对XML结果排序

使用jQuery按日期对XML结果排序,jquery,xml,sorting,date,date-sorting,Jquery,Xml,Sorting,Date,Date Sorting,我很难按日期对返回的XML数据进行排序。日期存储为YYYY-MM-DD。我很难找到有关此特定日期格式的联机帮助 这是我的js: $(document).ready(function () { $.ajax({ type: "GET", url: "database.xml", dataType: "xml", success: function (xml) { $(xml).find("event")

我很难按日期对返回的XML数据进行排序。日期存储为YYYY-MM-DD。我很难找到有关此特定日期格式的联机帮助

这是我的js:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "database.xml",
        dataType: "xml",
        success: function (xml) {
            $(xml).find("event").filter(function () {
                return $(this).find("eventplace").text() == 'NEWCASTLE';
            }).each(function () {
                var title = $(this).find('eventname').text();
                var venue = $(this).find('eventvenue').text();
                var city = $(this).find('eventplace').text();
                var date = $(this).find('eventdate').text();
                $('<div class="items">' + title + '</div>').html(title + venue + city + date).appendTo('#comingup');
            });
        }
    });
});
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“database.xml”,
数据类型:“xml”,
成功:函数(xml){
$(xml).find(“事件”).filter(函数(){
返回$(this.find(“eventplace”).text()='NEWCASTLE';
}).每个(功能){
var title=$(this.find('eventname').text();
var venture=$(this.find('eventventure').text();
var city=$(this.find('eventplace').text();
var date=$(this.find('eventdate').text();
$(''+标题+'').html(标题+地点+城市+日期).appendTo('#comingup');
});
}
});
});
下面是我的XML示例:

<Root_Element>
<eventserie>
    <event>
        <eventname>LITTLE COMETS</eventname>
        <eventvenue>O2 ACADEMY</eventvenue>
        <eventplace>NEWCASTLE</eventplace>
        <eventdate>2014-02-21</eventvdate>
    </event>
    <event>
        <eventname>SYMPHONIC PICTURES</eventname>
        <eventvenue>THE CLUNY</eventvenue>
        <eventplace>NEWCASTLE</eventplace>
        <eventdate>2014-03-10</eventvdate>
    </event>
    <event>
        <eventname>LET'S BUY HAPPINESS</eventname>
        <eventvenue>THINK TANK</eventvenue>
        <eventplace>NEWCASTLE</eventplace>
        <eventdate>2014-02-10</eventvdate>
    </event>
</eventserie></Root_Element>

小彗星
O2学院
纽卡斯尔
2014-02-21
交响乐图片
克吕尼酒店
纽卡斯尔
2014-03-10
让我们买幸福吧
智囊团
纽卡斯尔
2014-02-10

将时间戳存储在数据属性中,并将元素存储在数组中,然后在添加元素之前根据时间戳对数组进行排序:

$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“database.xml”,
数据类型:“xml”,
成功:函数(xml){
var项目=[];
$(xml).find(“事件”).filter(函数(){
返回$(this.find(“eventplace”).text()='NEWCASTLE';
}).每个(功能){
var title=$(this.find('eventname').text();
var venture=$(this.find('eventventure').text();
var city=$(this.find('eventplace').text();
var date=$(this.find('eventdate').text();
推(
$('', {
“类”:“项”,
文本:标题+地点+城市+日期,
'data-d':新日期(Date).getTime()
})
);
});
项目.排序(功能(a,b){
返回$(a).data('d').localeCompare($(b).data('d'));
});
$.each(项目、功能(idx、itm){
$('comingup')。追加(itm);
});
}
});
});

将时间戳存储在数据属性中,并将元素存储在数组中,然后在添加元素之前根据时间戳对数组进行排序:

$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“database.xml”,
数据类型:“xml”,
成功:函数(xml){
var项目=[];
$(xml).find(“事件”).filter(函数(){
返回$(this.find(“eventplace”).text()='NEWCASTLE';
}).每个(功能){
var title=$(this.find('eventname').text();
var venture=$(this.find('eventventure').text();
var city=$(this.find('eventplace').text();
var date=$(this.find('eventdate').text();
推(
$('', {
“类”:“项”,
文本:标题+地点+城市+日期,
'data-d':新日期(Date).getTime()
})
);
});
项目.排序(功能(a,b){
返回$(a).data('d').localeCompare($(b).data('d'));
});
$.each(项目、功能(idx、itm){
$('comingup')。追加(itm);
});
}
});
});

无需推送到阵列。将集合转换为对象数组并对其进行排序。变量
xmlevents
演示了如何实现这一点。还要在循环外部声明变量
var
。这只需要做一次

$(document).ready(function () {
  $.ajax({
    type: "GET",
    url: "database.xml",
    dataType: "xml",
    success: function (xml) {
    var xmlevents = $(xml).find("event");
    xmlevents.sort(function(a,b){
     a = $(a).find("eventdate").text();
     b = $(b).find("eventdate").text();
     return (a.localeCompare(b));
    }
    var title, venue, city, date 
    xmlevents.each(function () {
      title = $(this).find('eventname').text();
      venue = $(this).find('eventvenue').text();
      city = $(this).find('eventplace').text();
      date = $(this).find('eventdate').text();
            $('<div class="items">' + title + '</div>').html(title + venue + city + date).appendTo('#comingup');
        });
});
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“database.xml”,
数据类型:“xml”,
成功:函数(xml){
var xmlevents=$(xml).find(“事件”);
sort(函数(a,b){
a=$(a).find(“eventdate”).text();
b=$(b).find(“eventdate”).text();
返回(a.localeCompare(b));
}
var标题、地点、城市、日期
xmlevents.each(函数(){
title=$(this.find('eventname').text();
地点=$(this.find('eventventure').text();
city=$(this.find('eventplace').text();
日期=$(this.find('eventdate').text();
$(''+标题+'').html(标题+地点+城市+日期).appendTo('#comingup');
});
});

无需推送到数组。将集合转换为对象数组并对其进行排序。变量
xmlevents
演示了如何执行此操作。同时在循环外部声明变量
var
。只需执行一次

$(document).ready(function () {
  $.ajax({
    type: "GET",
    url: "database.xml",
    dataType: "xml",
    success: function (xml) {
    var xmlevents = $(xml).find("event");
    xmlevents.sort(function(a,b){
     a = $(a).find("eventdate").text();
     b = $(b).find("eventdate").text();
     return (a.localeCompare(b));
    }
    var title, venue, city, date 
    xmlevents.each(function () {
      title = $(this).find('eventname').text();
      venue = $(this).find('eventvenue').text();
      city = $(this).find('eventplace').text();
      date = $(this).find('eventdate').text();
            $('<div class="items">' + title + '</div>').html(title + venue + city + date).appendTo('#comingup');
        });
});
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“database.xml”,
数据类型:“xml”,
成功:函数(xml){
var xmlevents=$(xml).find(“事件”);
sort(函数(a,b){
a=$(a).find(“eventdate”).text();
b=$(b).find(“eventdate”).text();
返回(a.localeCompare(b));
}
var标题、地点、城市、日期
xmlevents.each(函数(){
title=$(this.find('eventname').text();
地点=$(this.find('eventventure').text();
city=$(this.find('eventplace').text();
日期=$(this.find('eventdate').text();
$(''+标题+'').html(标题+地点+城市+日期).appendTo('#comingup');
});
});

在答案中添加有助于p[人们理解的解释。在答案中添加有助于p[人们理解的解释。