2017-04-10 5 views
0

Je suis en train de stocker l'ordre des boîtes telles qu'elles apparaissent sur la page en utilisant gridstack.jsGridStack JS mis en ordre de cases de la grille

Actuellement, ils ordre qu'ils apparaissent en HTML, et non la façon dont ils sont disposés sur la page. Voici une image pour expliquer davantage ce que je suis en train de faire:

enter image description here

Le code que je utilise pour définir leur ordre:

$gridStack.on('change', gridStackItemOnChange); 


function gridStackItemOnChange(e, items) 
{ 
    var index = 0; 

    for(i in items) { 
     var el = $(items[i].el); 
     el.data('index', index); 

     console.log('view:', el.data('view'), ' index:', index); 

     index++; 
    } 
} 

Console des tirages mettre cette

view: about_me index: 0 
view: blank index: 1 
view: youtube index: 2 
view: comments index: 3 

Il semblerait que l'on obtienne tout ordre aléatoire, et pas de gauche à droite

Y a-t-il un moyen de contourner cela?

Répondre

1

L'ordre d'itération des boucles for... in n'est généralement pas garanti. Voir this answer pour plus d'informations.

Essayez ceci:

items.forEach(function(e, i) { 
    var el = $(e.el); 
    el.data('index', i); 

    console.log('view:', el.data('view'), ' index:', i); 
}) 
+0

Merci pour la réponse, mais je pense que je l'ai fixé il, essentiellement dans ma requête, je l'ai commandé par les champs « x » et « y » au lieu – Ben