2010-11-30 9 views
0

J'ai trouvé un extrait qui fonctionne pour un utilisateur, mais lorsque j'essaie d'appliquer le code sur ma page, je peux trier les éléments mais il ne sauvegarde jamais ce que j'ai trié. S'il vous plaît dites-moi ce qui ne va pas avec ce code.make UI.sortable fonctionne avec cookie plugin

(je Copiée d'une autre question, pas la mienne)

var setSelector = "#sortable"; 
// set the cookie name 
var setCookieName = "listOrder"; 
// set the cookie expiry time (days): 
var setCookieExpiry = 7; 

// function that writes the list order to a cookie 
function getOrder() { 
     // save custom order to cookie 
     $.cookie(setCookieName, $(setSelector).sortable("toArray"), { expires: setCookieExpiry, path: "/" }); 
} 

// function that restores the list order from a cookie 
function restoreOrder() { 
     var list = $(setSelector); 
     if (list == null) return 

     // fetch the cookie value (saved order) 
     var cookie = $.cookie(setCookieName); 
     if (!cookie) return; 

     // make array from saved order 
     var IDs = cookie.split(","); 

     // fetch current order 
     var items = list.sortable("toArray"); 

     // make array from current order 
     var rebuild = new Array(); 
     for (var v=0, len=items.length; v<len; v++){ 
       rebuild[items[v]] = items[v]; 
     } 

     for (var i = 0, n = IDs.length; i < n; i++) { 

       // item id from saved order 
       var itemID = IDs[i]; 

       if (itemID in rebuild) { 

         // select item id from current order 
         var item = rebuild[itemID]; 

         // select the item according to current order 
         var child = $("ul" + setSelector + ".ui-sortable").children("#" + item); 

         // select the item according to the saved order 
         var savedOrd = $("ul" + setSelector + ".ui-sortable").children("#" + itemID); 

         // remove all the items 
         child.remove(); 

         // add the items in turn according to saved order 
         // we need to filter here since the "ui-sortable" 
         // class is applied to all ul elements and we 
         // only want the very first! You can modify this 
         // to support multiple lists - not tested! 
         $("ul" + setSelector + ".ui-sortable").filter(":first").append(savedOrd); 

       } 
     } 
} 

     // here, we allow the user to sort the items 
     $(setSelector).sortable({ 
       cursor: 'move', 
       items: 'li', 
       //axis: "y", 
       opacity: 0.6, 
       //revert: true, 
       scroll: true, 
       scrollSensitivity: 40, 
       placeholder: 'highlight', 
       update: function() { getOrder(); } 
     }); 

     // here, we reload the saved order 
     restoreOrder(); 

Ça ne sauve pas, je peux trier et tout. c'est mon balisage. J'essaie de garder tout simple à des fins de test.

<ul id="sortable"> 
<li>test 1</li> 
<li>test 2</li> 
</ul> 

S'il vous plaît pouvez-vous corriger ce code pour faire enregistrer cookie et les paramètres sauvegardés quand je rafraîchir. Je suis tellement désespéré pour celui-ci :))

Merci!

Répondre

0

Vous devez mettre à chaque ID <li>

par exemple:

<ul id="sortable"> 
<li id="item-1">test 1</li> 
<li id="item-2">test 2</li> 
    </ul> 

Aussi, assurez-vous que vous fermez votre code à la fin avec });