【问题标题】:How to sort xml data by Date in JQuery如何在 JQuery 中按日期对 xml 数据进行排序
【发布时间】:2013-11-16 23:19:30
【问题描述】:

此应用程序正在从 RSS 提要中提取信息,我需要按日期对文章进行排序。 xml 数据包含一个“日期”元素,它以 ddmmyy 格式列出日期。我的问题:我可以在 jQuery 中实现一个排序函数来对信息进行排序并以正确的日期顺序显示它吗? (日期顺序应该是第一个显示的条目是最远的日期,例如:01/20/14 然后 01/07/2014 然后 12/22/13 等等... 这是我目前所拥有的:

<script type="text/javascript">
 $(document).ready(function() {

        $('input[type=radio]').click(function() {
            var id = this.id;
            if(id == 'radio-bio') { var categoryURL = '/BayAreaTech/wp-rss2.php?cat=15';}
            else if (id == 'radio-com'){ var categoryURL = '/BayAreaTech/wp-rss2.php?cat=13';}
            else if (id == 'radio-eleP'){ var categoryURL = '/BayAreaTech/wp-rss2.php?cat=9';}
            else if (id == 'radio-eleD'){ var categoryURL = '/BayAreaTech/wp-rss2.php?cat=10';}
            else if (id == 'radio-nano'){ var categoryURL = '/BayAreaTech/wp-rss2.php?cat=16';}
            else if (id == 'radio-opt'){ var categoryURL = '/BayAreaTech/wp-rss2.php?cat=12';}
            else if (id == 'radio-semi'){ var categoryURL = '/BayAreaTech/wp-rss2.php?cat=11';}
            else { var categoryURL = '/BayAreaTech/wp-rss2.php?cat=1';}

            $('#feedContainer').empty();
                        $.ajax({
                        type: 'GET',
                        url: categoryURL,
                        dataType: 'xml',
                        success: function (xml) {
                            $(xml).find("item").each(function () {
                                  var title = $(this).find("title").text();
                                  var date = $(this).find("Date").text();
                                  var region = date.substr(6);
                                        if (region.length < 3) { region = "ALL"; }  
                                  var description = $(this).find("description").text();
                                  var descriptdisplay = description.substr(0, description.indexOf(",")+6); //Parsed DATE from description
                                        if (descriptdisplay.length > 35) { descriptdisplay = "See event for details"; }
                                    //var locationdisplay = description.substr(description.indexOf(",")+6,4); //Parsed the location from description
                                  var category = $(this).find("category").text();
                                  var linkUrl = $(this).find("link").text();
                                  var displaytitle = "<a href='" + linkUrl + "' target='_blank'>" + title + "</a>"  
                                  $('#feedContainer').append('<h3>'+displaytitle+'</h3><p>'+"Event Date: "+descriptdisplay+'</p><p>'+"Location: "+region+'</p');

                            });
                        }
                    });

        });
 });
 </script>

【问题讨论】:

    标签: javascript jquery xml sorting date


    【解决方案1】:

    建议您先将 xml 解析为可排序的对象数组,然后再解析为 html

    success: function (xml) {
        var data=[];
        $(xml).find("item").each(function () {
          var dateText= $(this).find("Date").text()
    
          var item={
               title: $(this).find("title").text(),
               dateText =dateText,
               date : new Date( dateText),
               /* other properties*/
            }  
            /* push object to array*/
            data.push( item);
    
        });
    
        /* sort data*/
        data.sort(function(a,b){
             return a.date > b.date;
        });
    
         /* now parse to html */    
          $.each(data, function(index, item){
    
    
          })
    

    【讨论】:

    • 感谢您的反馈!我将努力实现这一点。不过我有一个问题,我是否在 $.each(data, function() 中解析为 html?
    • 示例 title 将是循环内的 item.title。基本上需要第一个循环将所有内容从 xml 存储到对象,第二个循环现在将从每个对象中提取数据以包装在您的 html 中
    • 嗯,我明白了。我会让你知道这是如何工作的。再次感谢您的宝贵时间和回复!
    • 我尝试实现您提供的代码,但我仍然遇到问题。可以看看更新后的代码吗?
    • 我没有看到更新的代码...您试图编辑我的答案,但 3 个审稿人拒绝了它...更新应该是有问题的。去这里..plnkr.co/edit/gist:1986619...添加xml和你的代码并保存。会让它在那里为你工作
    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 2013-12-07
    • 2011-09-08
    • 2019-01-17
    • 2020-06-04
    • 2014-07-08
    • 2016-10-15
    • 1970-01-01
    相关资源
    最近更新 更多