2017-02-07 17 views
12

Używam Framework7 sortable list i działa dobrze, tylko że nie powoduje zdarzenia po zmianie listy.Nie można zapobiec zdefaultowaniu wewnątrz pasywnego detektora zdarzeń

Więc staram kilka wbudowanych w imprezach:

$('.sortable-handler').on('touchstart', function (e) { 
    e.preventDefault(); 
    alert('touchstart'); 
}); 

$('.sortable-handler').on('touchmove', function (e) { 
    e.preventDefault(); 
    console.log('touchmove'); 
}); 

$('.sortable-handler').on('touchcancel', function (e) { 
    e.preventDefault(); 
    console.log('touchcancel'); 
}); 

$('.sortable-handler').mouseleave(function (e) { 
    e.preventDefault(); 
    console.log('mouseleave'); 
}); 

.. ale pojawia się:

Nie można preventDefault wewnątrz biernego słuchacza zdarzeń ze względu na cel leczony jako pasywny. Zobacz https://www.chromestatus.com/features/5093566007214080

Które wydarzenie należy zwracać uwagę, aby uzyskać zaktualizowaną listę na wszelkiego rodzaju?

Odpowiedz

1

Aby obsłużyć sortable listy w Framework7 gdy użytkownik aktualnie uwolnienie sortowania elementów w nowym położeniu, można użyć tego kodu:

$$('li').on('sortable:sort',function(event){ 
    alert("From " + event.detail.startIndex + " to " + event.detail.newIndex); 
    }); 

Fiddle: https://jsfiddle.net/0zf5w4y7/

+0

Ah człowieka, skąd wiedziałaś o tym wydarzeniu? Nie jest to wspomniane w ich dokumentacji. – 3zzy

+0

Mają. Wspomnieli o tym na dole strony. Zobacz dokumentację https://framework7.io/docs/sortable-list.html#sortable-events –

16

zobaczyć ten blog post. Jeśli jesteś zadzwonić preventDefault na każdym touchstart następnie należy również mieć regułę CSS, aby wyłączyć przewijanie dotyku jak .sortable-handler { touch-action: none; }

+0

Perfect, thx. Właśnie tego szukałem. –

+0

@Rick Byers, jak mogę dodać 'preventDefault()' dla 'wheelwheel koła myszy DOMMouseScroll' – Syed

+0

@Rick Beyers. czy możesz podać przykład? Mam taki sam problem z wydarzeniem jukeery mobile 'swipe' – tonkihonks13