2012-01-09 6 views
7

Perdonami, dato che sono un po 'alle prime armi con JS, conosco abbastanza da manipolare.come ordinare per data (nuovo) con jquery isotopo

Per chi ha familiarità con Isotope (http://isotope.metafizzy.co/docs/sorting.html), ho un pulsante nella parte superiore di una pagina per ordinare per data. Isotope trova l'elemento

<span class="date"> 01/04/2012 </span> 

con questo:

$container.isotope({ 
    getSortData : { 
     date : function ($elem) { 
     return $elem.find('.date').text(); 
}}); 

che funziona bene, ma ho bisogno di capovolgere (discesa) l'ordine della data

isotopo ha una funzione:

$('#container').isotope({ 
    sortBy : 'date', 
    sortAscending : false 
}); 

Ma non riesco a farlo funzionare - questo rende solo l'ordinamento predefinito per data, piuttosto che l'ordinamento quando clicco. Penso che questa sia solo una questione di sintassi ... come/dove posso mettere sortAscending: false ??

Grazie ...

EDIT guardando qualche fonte da Demos, vedo che:

<a href="#sortAscending=false"> 

può essere fatto, ma sto già l'ordinamento per passare questo:

<a href="#sortBy=date"> 

Che trova uno span da prima con le informazioni sulla data ...

+0

Non far risorgere un thread precedente, ma hai mai trovato la risposta? – ahollenbach

risposta

7

Ecco come ho fatto, jsFiddle

$container.isotope({ 
    itemSelector: '.element', 
    getSortData: { 
     date: function ($elem) { 
      return Date.parse($elem.find('.date').text()); 
     } 
    } 
}); 

Non sembra avere importanza quale formato della data è in, e le opere ascendente e discendente.

Il metodo parse() analizza una stringa data e restituisce il numero di millisecondi tra la stringa di data e la mezzanotte del 1 ° gennaio 1970.

Fondamentalmente si trasforma le stringhe di data in numeri solidi belle che sono facili da confrontare .

+0

Grazie! che jsFiddle ha molti esempi di classificazione! – Paschalis

+0

Ho giocato con il tuo jsFiddle, e non sembra funzionare davvero. Prova a disattivare prima il ridimensionamento delle variabili, in modo da poter visualizzare meglio l'ordinamento. – magi182

+0

@ magi182 hai fatto clic sul pulsante della data? – apaul

2

Ecco cosa ho fatto per ordinare per data.

Se la data è nel formato '01/01/2012 ', è necessario convertirlo in un oggetto data javascript.

getSortData: { 
    date: function ($elem) { 
     var dateStr = $elem.find('.date').text(), 
      dateArray = dateStr.split('/'), 
      year = dateArray[2], 
      month = dateArray[0], 
      day = dateArray[1]; 
     return new Date(year, month, day); 
    } 
} 

poi si fa il solito

$('#container').isotope({ sortBy: 'date' }); 
+1

Si dovrebbe restituire questo "return year.toString() + month.toString() + day.toString();" questo, il tuo ritorno ordinerà alfabeticamente i giorni della settimana – Blowsie

Problemi correlati