2010-06-16 20 views
6

come posso ordinare tutti officers in base alla loro rankscome ordinare i dati XML in jQuery

jQuery

$.get('officers.xml', function(grade){ 
    $(grade).find('officer').each(function(){ 
     var $rank = $(this).attr('rank'); 
    }); 
}); 

XML (officer.xml)

<grade> 
<officer rank="2"></student> 
<officer rank="3"></student> 
<officer rank="1"></student> 
</grade> 

grazie.

+0

Avete bisogno di * ordinarli *? Se vuoi * visualizzarli/usarli * in ordine, dovrebbe funzionare un ciclo for con un selettore di attributo. –

+0

Intendo utilizzare un menu a discesa per mostrare gli ufficiali in ordine ascendente o discendente. – pixeltocode

risposta

8
$.get('officers.xml', function(grade){  
    var officer = $(grade).find('officer'); 

    officer.sort(function(a, b){ 
    return (parseInt($(a).attr('rank')) - parseInt($(b).attr('rank'))); 
    }); 

    officer.each(function(i,v){ 
    alert($(v).attr('rank')); 
    }); 
});  
+0

+1. grazie per quello :) – pixeltocode

0

Qualcosa del genere dovrebbe funzionare

var officers = $('officer'); // unsorted 

function matchRank(a, b) { 
    return (int)a.attr('rank') - (int)b.attr('rank'); 
}; 

officers.sort(matchRank); // sorted 
2

Nel caso in cui si genera dinamicamente il file XML sul server il modo migliore è quello di ordinare i dati sul lato server. Alcune discussioni sono here.

+0

+1 grazie per le informazioni, probabilmente passerò al lato server più tardi. – pixeltocode

Problemi correlati