Ho una lista ordinabile dell'interfaccia utente jQuery. Sto cercando di farlo funzionare su dispositivi mobili. Ho usato la soluzione alternativa al tocco. Per poter scorrere devo disattivare la funzione ordinabile, l'ho fatto e su taphold di un elemento list attivare la funzione ordinabile. Funziona bene, ma il problema è che lo voglio mentre sono su taphold per consentire l'ordinamento dell'elemento. Ora funziona solo così: taphold l'elemento (taphold stops) e poi devo ancora toccarlo per ordinare.Jquery consente di tenere e trascinare il cellulare per il telefono
codice HTML:
<ul class="list-group" id="wrapper">
<li class="list-group-item">Block 1</li>
<li class="list-group-item">Block 2</li>
<li class="list-group-item">Block 3</li>
<li class="list-group-item">Block 4</li>
<li class="list-group-item">Block 5</li>
<li class="list-group-item">Block 6</li>
<li class="list-group-item">Block 7</li>
<li class="list-group-item">Block 8</li>
<li class="list-group-item">Block 9</li>
<li class="list-group-item">Block 10</li>
<li class="list-group-item">Block 11</li>
<li class="list-group-item">Block 12</li>
<li class="list-group-item">Block 13</li>
<li class="list-group-item">Block 14</li>
<li class="list-group-item">Block 15</li>
<li class="list-group-item">Block 16</li>
<li class="list-group-item">Block 17</li>
<li class="list-group-item">Block 18</li>
<li class="list-group-item">Block 19</li>
<li class="list-group-item">Block 20</li>
<li class="list-group-item">Block 21</li>
<li class="list-group-item">Block 22</li>
<li class="list-group-item">Block 23</li>
</ul>
JS Codice:
$('#wrapper li').on('taphold', function(event, ui) {
$("#wrapper li").removeClass('selected');
$("#wrapper").sortable({disabled:false});
$(this).addClass('selected');
});
$("#wrapper").sortable({disabled:true,containment: "parent"});
$("#wrapper").on("sortupdate", function(event, ui) {
$("#wrapper").sortable({disabled:true});
});
Ecco una jsfiddle (https://jsfiddle.net/3cygah12/) dell'esempio.
Qualcuno sa come risolvere questo problema?
è necessario implementare eventi di tocco - http://www.javascriptkit.com/javatutors/touchevents.shtml - è possibile trovare molti esempi sulla rete, tuttavia perché si sta lavorando sull'asse y ovvero su/in basso dovrai impostare un timer di almeno un secondo prima di impostare (disabilitato: falso) altrimenti lo scorrimento e il trascinamento di elementi potrebbero essere entrambi istantanei e potresti avere un problema – Tasos
l'ho già fatto, il problema è che non posso chiamare l'evento per trascinare avvio su taphold o touchstart o altro. Posso abilitare sortable ma posso trascinare l'elemento solo quando la funzione termina. Quindi funziona come questo taphold (touchstart) -> abilita ordinabile -> taphold (touchstart) ends-> then i può trascinare. – Shile
sì, so come funziona, l'ho provato sul mio cellulare quando ho visto la tua Q. dai un'occhiata a una risposta che ho dato qualche tempo fa per trascinare gli oggetti sull'asse X per vedere cosa intendo riguardo gli eventi di tocco JS. puoi provare a invertirlo per lavorare solo sull'asse Y e vedere se può fare il lavoro: http://stackoverflow.com/questions/29966181/jquery-touchswipe-event-on-element-prevents-scroll/29969575#29969575 – Tasos