在jQuery加载的div中对li进行排序

时间:2010-11-05 07:22:22

标签: javascript jquery ajax sorting

我创建了一个3语言网站,我需要对所有3种语言的评论进行排序,这些评论在每种语言的页面上都可见。 http://www.polinapasztircsak.com/guestbook/ 我尝试使用jQuery .load方法加载,但是它有效,但问题是它在div中加载了单独的语言(我不知道加载和追加它的其他方式)我可以不要将评论li排在div之外。这是代码:

var commEng = $('<div></div>').load('../guestbook/ .comment');
var commHun = $('<div></div>').load('../vendegkonyv/?lang=hu .comment');
var commIta = $('<div></div>').load('../libro-ospiti/?lang=it .comment');

$(".commentlist").empty().append(commEng).append(commHun).append(commIta);

您是否有其他建议如何加载li,我将它们放在同一个ul中,然后用哪个方法或插件进行排序。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用$.get或任何其他ajax函数来加载评论,然后使用Javascript的sort函数对其进行排序。代码看起来像这样:

var loaded = 0, 
    sites = 3,
    comments = []; 

function getComments(url){
    $.get(url, function(data){
        comments[loaded++] = ($(data).find('.comment'));
        if(loaded === sites){
            var insert = comments[0];

            for(var i = 1; i < comments.length; i++){
                insert = insert.add(comments[i]);
            }

            $('.commentlist').append(insert.sort(function(a, b){
                var dateA = new Date($.trim($(a).find('.comment-meta:first a').text()).replace('at', '') + ' GMT'), 
                    dateB = new Date($.trim($(b).find('.comment-meta:first a').text()).replace('at', '') + ' GMT');

                return dateB.getTime() - dateA.getTime();
            }));
        }
    });
}

getComments('../guestbook/'); 
getComments('../vendegkonyv/?lang=hu');
getComments('../libro-ospiti/?lang=it');

这将通过传递一个函数来对通过ajax与sort()收到的jQuery元素进行排序,该函数将比较从注释元素中删除的注释的日期。另请注意,div无序列表中的ul s无效HTML。