プロジェクトにjQueryUIのドラッグ可能とソート可能の両方を統合し、マウスダウンイベントと最初のマウスムーブイベントの開始時間の時間差を使用してそれらを区別したいと考えています。私のコードの一部は次のとおりです。
if (self.mouse.endTime - self.mouse.startTime < 700){
var deltaX = self.mouse.startX - event.pageX,
deltaY = self.mouse.startY - event.pageY;
// Drag down
if(Math.abs(deltaX) < Math.abs(deltaY) && deltaY < 0){
$(self.el).draggable({disabled: false});
$(self.el).find('li').draggable({disabled: true});
$(self.el).sortable({disabled: true});
$(self.el).draggable({axis: 'y'});
$(self.el).draggable({revert: true});
....
else {
$(self.el).sortable({disabled: false});
$(self.el).draggable({disabled: true}); // global dragging
$(self.el).children().draggable({disabled: true}); // item dragging
$(self.el).sortable({containment: $(self.el).closest('.content')});
}
しかし、物事は私が期待したものではありません。要素のドラッグを開始するたびに、firebug に表示される html には適切なドラッグ可能/並べ替え可能なクラス設定がありますが、現在のドラッグ イベントには効果的ではありません。たとえば、初めてドラッグするとき、html には対応するクラス設定が既にあるにもかかわらず、要素はドラッグ可能でもソート可能でもありません。2 回目にドラッグすると、ドラッグ可能またはソート可能になります。また、現在のドラッグ イベントに対して要素をドラッグ可能/並べ替え可能に設定すると、次にドラッグしたときに機能します。つまり、現在のイベントに期待するドラッグ可能/並べ替え可能なイベントは、次のイベントでのみ有効になります。これがjQueryUIの本来あるべき姿なのか、それとも私のコードに問題があるのか を知りたいです。どうすれば直せますか?