2010-08-27 3 views
1

est-il possible de trier div en utilisant la fonction de données?Jquery - Trier div par classe à l'aide de données()

html

<div id="gp_21" class="line">one</div> 
<div id="gp_35" class="line">two</div> 
<div id="gp_11" class="line">three</div> 
<div id="gp_29" class="line">four</div> 

<hr /> 

<div id="check"></div> 

js

$(document).ready(function rt() { 

    $('#gp_21').data("rtt", { age: '251351' }); 
    $('#gp_35').data("rtt", { age: '25131151' }); 
    $('#gp_11').data("rtt", { age: '251' }); 
    $('#gp_29').data("rtt", { age: '25131148' }); 

check(); 

}); 


function check() 
{ 

    $('.line').each(function() { 

    age = $('#'+this.id+'').data("rtt").age; 

    $('#check').append('-> '+age+' - '+this.id+'<br />'); 


    }); 

} 

exemple de travail ->http://www.jsfiddle.net/V9Euk/265/

Merci à l'avance! Peter

+1

Vous n'avez pas besoin de '$ (" # "+ this.id)' use peut simplement utiliser '$ (this)' à la place – BrunoLM

+0

Avez-vous vu le plugin Quicksand? http://www.razorjack.net/quicksand/ –

+0

@ Yi Jiang ... joli plugin! Merci! – Peter

Répondre

0

salut Voir cette http://www.jsfiddle.net/V9Euk/268/

function check() 
{ 
    var ages= []; 
    var ids = [] 
    $('.line').each(function() { 

     ages[ages.length] = $('#'+this.id+'').data("rtt").age;   
     ids[ids.length] = this.id; 
    });  
    ages.sort(sortByAge); 
    $(ages).each(function(i, v) {    
     for(key in ids) 
     { 
      if($("#"+ids[key]).data("rtt").age == v) 
      { 
       $('#check').append('-> '+v+' - '+ids[key]+'<br />'); 
      } 
     } 

    }); 

} 
function sortByAge(a, b) 
{ 
     return a-b; 
} 

Salut, je mis à jour ma réponse pour annexant divs triés.

Questions connexes