2012-02-01 29 views
0

這可能是一個愚蠢的問題,問我是否缺少一個關鍵點。我想創建一個可調整大小的可拖動。我不知道什麼是做正確的方式,但我做了這樣的事情:在jQuery UI中爲多個事件設置一個回調

$('#MYID').resizable(); 
$('#MYID').draggable(); 

現在我想將它移動到某個位置,當一切都完成保存位置使用:$('#MYID').ui-position。我不確定如何在這種情況下實現回調函數。如果我使用回調是這樣的:

$('#MYID').resizable(); 
$('#MYID').draggable()(Function()({....callback code for ui-position}) 

這是正常的,如果把它放在一個位置後,用戶不調整拖動,但如果他不?

如何在兩個事件完成後設置一個回調?

回答

1

讓他們都設置一個標誌,然後使用條件,如果兩個標誌被設置爲呼叫完成功能

var flagA = 0; 
var flagB = 0; 
... 
completeResize: 
flagA = 1; 
if(flagA && flagB)completionFunction(); 
... 
completeDraggable: 
flagB = 1; 
if(flagA && flagB)completionFunction(); 
0

有一個有趣的插件叫做eventstack。它允許您將事件綁定到事件隊列的頂部或底部。我不知道你的問題有多普遍,或者你是否想要顛倒或任意排序堆棧中的事件,但插件可能會簡化你的任務。

+1

這是一個很好的答案,但我不確定它是相關的。只要在每個事件完成和回調測試中設置一個標誌爲true,如果此標誌設置爲true,然後繼續。儘量遠離插件,你可以! – 2012-02-01 23:35:53

0

因爲jQuery對象可鏈接,讓你元素都拖動和調整大小,你可以執行此操作:

$('#MYID').resizable().draggable(); 

然後,因爲您只想保存最終位置,所以調用同一個事件處理程序兩次並不重要。所以,你可以只註冊這樣的事件:

$('#MYID').on('resizestop dragstop', function(event, ui) { 
             alert(ui.offset); /* or whatever */ 
            } 
相關問題