2012-02-01 102 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 */ 
            } 
相关问题