2010-11-05 27 views
1

我製作了一個3語言網站,我需要對來自所有3種語言的評論進行排序,以便它們在每種語言的頁面上都可見。 http://www.polinapasztircsak.com/guestbook/ 我試過裝載jQuery .load方法,它的工作原理,但問題是它加載在div s(我不知道其他方式加載和追加它)單獨的語言,我不能排序評論li s在div之外。下面是代碼:在jQuery加載div中對li進行排序

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 S加載,我讓他們在同一個ul,然後方法或插件用於排序是哪個。

回答

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獲得jQuery的元素與sort()通過傳遞會比較從註釋元刮意見的日期的功能。還請記住div s在ul無序列表無效HTML。

+0

非常感謝你的工作很棒!我唯一需要添加的是append()之前的空(),以便在將新排序的註釋放入之前刪除舊註釋。 最好的問候, – Gas 2010-11-06 06:25:44