내 프로젝트에서 jQueryUI를 드래그 가능하고 정렬 가능하게 통합하고 mousedown 시작 시간과 첫 번째 mousemove 이벤트 사이의 시간차를 사용하여 구별하려고합니다. 내 코드의 일부는 다음과 같습니다 :프로젝트에서 jQueryUI를 드래그 가능하고 정렬 가능하게하는 방법은 무엇입니까?
var deltaX = self.mouse.startX - event.pageX,
deltaY = self.mouse.startY - event.pageY;
if (self.mouse.mousedownTime - self.mouse.mousemoveTime < 700){
// Drag down
if(Math.abs(deltaX) < Math.abs(deltaY) && deltaY < 0){
$(self.el).draggable({disabled: false});
$(self.el).sortable({disabled: true});
$(self.el).draggable({axis: 'y'});
$(self.el).draggable({revert: true});
....
}
// Sorting action
else {
$(self.el).sortable({disabled: false});
$(self.el).draggable({disabled: true}); // global dragging
$(self.el).sortable({containment: $(self.el).closest('.content')});
}
그러나 나는 예상 한 바가 없습니다. 요소를 드래그하기 시작할 때마다 파이어 버그에 표시된 html은 적절한 드래그 가능/정렬 가능한 클래스 설정을 갖지만 현재 드래그 이벤트에는 효과적이지 않습니다. 예를 들어 처음으로 드래그하면 html에는 이미 해당 클래스 설정이 있지만 요소는 드래그 가능하거나 정렬 할 수 없습니다. 드래그 할 때 드래그하거나 정렬 할 수 있습니다. 현재 끌기 이벤트에 대해 드래그 가능/정렬 가능 요소를 설정하면 다음 드래그 할 때만 작동합니다.
즉, 현재 이벤트에 필요한 draggable/sortable 이벤트는 다음 이벤트에만 적용됩니다. jQueryUI가 있어야하는지 아니면 내 코드에 문제가 있는지 알고 싶습니다. 어떻게 수정해야합니까? 내 프로젝트에서 드래그 가능 및 정렬 가능 모두를 어떻게 통합해야합니까?
하지만 실제로는 전역 드래그, 항목 끌기, 정렬 등과 같이 여러 동작을 함께 통합 할 수있는 iPhone 또는 Android 앱이 많이 있습니다. 이 앱들은 어떻게 이것을 달성합니까? 그리고 데스크탑 브라우저에서는이를 구현할 수 없습니까? – chaonextdoor
@chaonextdoor 물론, 정확히 말하자면 드래그 앤 드롭과 서로 후에 일어나는 두 가지 동작을 구분하는 것이 의미가 없습니다. – Starx
죄송합니다, 왜 당신은 항상 떨어지는 언급을 모르겠습니다. 여기서 통합하고자하는 것은 하나의 ul 요소에서 드래그하고 정렬하는 것입니다. 그리고 떨어 뜨리는 것이 끌기로 항상가는 것은 아닙니다. 이것이 jQueryUI가 drapable 및 droppable이라는 두 가지 분리 된 상호 작용을 갖는 이유입니다. 이를 함께 사용하거나 별도로 사용할 수 있습니다. 그것은 당신에게 달려 있습니다. – chaonextdoor