6

La discusión comienza jQuery: What to do with the list that sortable('serialize') returns?jQuery: ¿Cómo revertir arreglos ordenables ('serializar') de último a primero?

Cómo revertirla del último al primero, updateList.php? Id [] = 5 & ID [] = 4 & ID [] = 3 & ID [] = 2 & ID [] = 1 & & acción = actualizar?

<ul> 
<li id="oreder-5">5</li> 
<li id="oreder-4">4</li> 
<li id="oreder-3">3</li> 
<li id="oreder-2">2</li> 
<li id="oreder-1">1</li> 
<ul> 

Mi código:

$(document).ready(function(){ 
    order=[]; 
    $('#list ul').children('li').each(function(idx, elm) { order.push(elm.id.split('-')[1]) }); 
    $.post('updateList.php', {'order[]': order, action: 'update'}); 

    function slideout(){ 
     setTimeout(function(){ $("#response").slideUp("slow", function() {}); }, 2000); 
    } 
    $("#response").hide(); 
$(function() { 
    $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update: function() { 
    var order = $(this).sortable("serialize") + '&action=update'; 
    $.post("updateList.php", order, function(theResponse){ 
    $("#response").html(theResponse); 
    $("#response").slideDown('slow'); 
    slideout(); 
    }); 
    }});    
}); 
}); 

Respuesta

7

Esto lo hará:

var reversed = $(this).sortable("serialize").split("&").reverse().join("&"); 
var order = reversed + '&action=update'; 

En otras palabras:

  • Split la cuerda en el '&'.
  • Reverse la matriz resultante.
  • Join la matriz con el carácter '&' para formar la secuencia serializada invertida.
+0

Gracias, @ karim79! Funciona bien para la segunda parte jquery con cursor: efecto 'mover', pero no funciona para order = []; $ ('# list ul'). Children ('li'). Each (función (idx, olmo) {order.push (elm.id.split ('-') [1])}); $ .post ('updateList.php', {'order []': order, action: 'update'}); ¿Podría obtener una solución también para eso? – Binyamin

+0

¡Brillante! ¡Gracias por esto! –

1

Necesaria order.reverse(); antes de $ .post (..);

Cuestiones relacionadas