Ciao a tutti.
Tramite jquery, devo ordinare una serie di checkbox in base al click su di esse.
Anzi, più che al click su di esse, al click su delle immagini che si relazionano con le checkbox.
Per farlo, avevo pensato ad una serie di variabili che ne tenevano l'ordine, o di usare un campo input per per memorizzare i click, poi guardando online ho trovato una soluzione abbastanza semplice che nell'esempio presentato funziona, ma appena lo trasformo per adattarsi ai miei bisogni.... non va.
Il concetto è molto semplice: recupero in una variabile tutti i checkbox disponibili ed il contenitore degli stessi:
codice:
var $wrapper = $("#wrapper"),
$ch = $('input[type="checkbox"]', $wrapper);
quindi al click sull'immagine, ottengo il checkbox su cui lavorare, lo attivo e lo elimino dalla lista di tutti i checkbox; quindi copio questa lista e aggiungo il checkbox attivo alla fine della lista.
codice:
$('img',$wrapper).live('click',function() {
var $ckb = $(this).next(); //set ckb value
$ckb.attr('checked', !$ckb.attr('checked')); //check/uncheck
$ch = $ch.not($ckb); //remove from jQuery 'array'
// --- //add to end of jQuery 'array' 4 different method -- NOT WORK
// $ch.push($ckb);
// $ch.live('append',$ckb);
// $ch.add($ckb);
// Array.prototype.push.call($ch, $ckb);
alert($ch.length); //show how many checkbox are in the list
});
Riesco a fare tutto, tranne aggiungere il checkbox alla fine della lista. Infatti, se chiedo la lunghezza della lista prima di rimuovere il checkbox ottengo il corretto numero degli elementi, mentre se lo faccio dopo ne ottengo uno in meno (quello che ho tolto).
Ho provato con diverse soluzioni ma con nessuna di queste riesco a ottenere un risultato.
Se volete vederlo funzionante lo sto creando su JSFiddle http://jsfiddle.net/cjmJM/9/
Qualcuno di voi ha qualche suggerimento?