2015-10-03 21 views
6

Ho un div ordinabile (#sortable) con elementi (.draggable) al suo interno. Lì dentro, quando ordino gli elementi dal basso verso l'alto, gli elementi possono essere facilmente ordinati trascinando verso l'alto e non devo trascinare molto verso l'alto. Ma quando si ordinano gli elementi dal basso verso l'alto, devo trascinare l'elemento molto più in basso di quanto desiderato. C'è un modo per controllare l'ordinamento degli elementi, in modo che anche se trascino solo un po 'in alto/in basso e non completamente su/giù, mostrerà il segnaposto per posizionare l'elemento rispettivamente?C'è un modo per controllare l'ordinamento degli elementi quando si utilizza jquery ui

Demo a codepen.

js

$('#content #sortable').sortable({ 
    handle: '.drag_handle', 
    placeholder: "ui-state-highlight", 
    axis: "y" 
    }); 

    $('#blocks .draggable').draggable({ 
    helper: "clone", 
    revert: "invalid", 
    connectToSortable: '#content #sortable' 
    }); 

aggiornamento

ordinamento verso l'alto

ordinamento verso l'alto è facile come io non devo trascinare l'elemento di tutta la strada fino sopra l'elemento che voglio ordinare con.

enter image description here

ordinamento verso il basso

ordinamento verso il basso è difficile come devo trascinare l'elemento fino in fondo sotto l'elemento che voglio ordinare con.

enter image description here

+0

Sto avendo difficoltà a capire la questione. Potresti fornire uno schizzo o qualche spiegazione aggiuntiva? – polarblau

+0

@polarblau Si prega di controllare questa demo [codepen] (http://codepen.io/aamus/pen/qOrpEZ?editors=100). Quando trascino/riordinando l'elemento, non devo trascinare fino alla fine dell'elemento up, ma quando trascino verso il basso devo trascinarlo completamente sotto l'elemento. Quello che voglio è quando trascino/ordina l'elemento diciamo 5px sotto e poi lascia un segnaposto per quell'elemento, in modo che non debba trascinare verso il basso l'elemento sottostante. – Aamu

+0

Ok, penso di aver capito. Grazie! – polarblau

risposta

5

Basta modificare l'opzione tolerance del sortable API a "pointer". Questa opzione renderà il draggable considerato nel segnaposto quando il cursore si trova su di esso (ciò di cui hai bisogno in questo momento) invece di aspettare che oltre il 50% dell'elemento si sovrapponga al segnaposto. Questo era il motivo per cui dovevi scorrere troppo in basso per poterlo ordinare.

$('#content #sortable').sortable({ 
    handle: '.drag_handle', 
    placeholder: "ui-state-highlight", 
    tolerance: "pointer" 
}); 

Ecco la versione aggiornata di CodePen

+0

Grazie. Questo mi stava uccidendo. – Aamu

+0

La taglia può essere assegnata dopo 7 ore, dopo verrà eseguita. Grazie ancora. – Aamu