无法阻止被动事件侦听器内的默认

我正在使用Framework7可排序列表 ,它运行良好,只是在列表更改时不会触发事件。

所以我正在尝试一些内置事件:

$('.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'); }); 

..但我得到的是:

由于目标被视为被动,因此无法阻止被动事件侦听器内的默认。 请参阅https://www.chromestatus.com/features/5093566007214080

我应该寻找哪种事件来获取每种类型的更新列表?

要在用户释放当前在新位置排序元素时处理Framework7中的可排序列表,您可以使用以下代码:

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

小提琴: https : //jsfiddle.net/0zf5w4y7/

看到这篇博文 。 如果你在每个touchstart上调用preventDefault ,那么你也应该有一个CSS规则来禁用触摸滚动,如.sortable-handler { touch-action: none; } .sortable-handler { touch-action: none; }