0
我想要將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')});
}
但事情並非我所期望的。每當我開始拖動元素時,firebug中顯示的html都具有可拖動/可排序的類設置,但對當前拖動事件無效。例如,當您第一次拖動時,雖然html已經具有相應的類設置,但該元素既不可拖動也不可排序。第二次拖動它時,它可以拖動或排序。如果您爲當前拖動事件設置可拖動/排序的元素,則只有在您下次拖動元素時才能使用該元素。
總而言之,您對當前事件期望的可拖動/可排序事件只對下一個事件有效。我想知道這是jQueryUI應該是什麼或者我的代碼有問題。我應該如何解決它?我應該如何在我的項目中集成可拖動和排序?
但實際上有很多iPhone或Android應用程序可以將多種行爲整合在一起,例如全局拖動,項目拖動,排序等。這些應用程序如何實現這一點?在桌面瀏覽器中無法實現? – chaonextdoor 2012-04-24 00:00:44
@chaonextdoor,當然,這正是我的觀點,拖放和兩個行爲發生在另一個之後,試圖分開它們沒有意義嗎? – Starx 2012-04-24 04:42:01
對不起,我不知道你爲什麼總是提到下降。我想在這裏集成的是在一個ul元素中拖拽和排序。拖放並不總是隨着拖動而去,對吧?這就是爲什麼jQueryUI有兩個分離交互:可拖動和可拖動。您可以一起使用或分開使用它們。全取決於你。 – chaonextdoor 2012-04-24 04:49:43