2010-06-16 8 views
6

¿Cómo puedo ordenar todos officers en función de su rankscómo ordenar los datos XML en 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> 

gracias.

+0

¿Tienes que * ordenar *? Si desea * mostrar/usar * ellos en orden, un bucle for con un selector de atributos debería funcionar. –

+0

tengo la intención de utilizar un menú desplegable para mostrar a los oficiales en orden ascendente o descendente. – pixeltocode

Respuesta

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. gracias por eso :) – pixeltocode

0

Algo como esto debería funcionar

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

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

officers.sort(matchRank); // sorted 
2

En caso de que se genera dinámicamente el archivo XML en el servidor de la mejor manera es para ordenar los datos en el lado del servidor. Alguna discusión es here.

+0

+1 gracias por la información, probablemente cambie al servidor más adelante. – pixeltocode