2009-08-13 66 views
1

我正在嘗試使一組對象可拖動,如下所示 - 很簡單。 但我想配置的東西,如果這些項目中的任何一個被拖動, 其他人自動停止拖動。有誰知道如何做到這一點?如何在script.aculo.us中禁用Draggables

var products = document.getElementsByClassName('box'); 
for (var i = 0; i < products.length; i++) { 
    new Draggable(products[i].id, {ghosting:true}) 
} 

此外,有可能的話,你已經通過代碼作出後的對象拖動,以選擇性地且單獨地觸發其「在onStart」,「onEnd」或「恢復」的序列,而不是使用鼠標?

回答

0

保存Draggables集合中,並呼籲他們destroy()時,其中一個被拖動(即onEnd被解僱):

var draggables = []; 
var products = document.getElementsByClassName('box'); 
for (var i = 0; i < products.length; i++) { 
    var draggable = new Draggable(products[i].id, { 
     ghosting:true, 
     onEnd: function() { 
      draggables.invoke('destroy'); 
     } 
    }); 
    draggables.push(draggable) 
} 
+0

感謝您的跟進... 我試過這段代碼,但它似乎並沒有工作。除了聲明「draggables.invoke('destroy')」之外,一切似乎都正常工作。 這似乎沒有效果。我嘗試了其他變體,例如: [1](var d in draggables) draggables.pop(d); [2] draggables.each(function(draggable){ alert(item)}); – echobase 2009-08-14 18:03:09

+0

...對不起,評論搞砸了。我也試過:。 draggables.each(功能(可拖動){ draggable.destroy();} 但這一切似乎工作 – echobase 2009-08-14 18:04:54

+0

crescentfresh: 我終於做到了這就是我所做的: onEnd:功能(d){ \t Draggables.drags.each(功能(可拖動){ draggable.destroy();} } 感謝您的幫助車輪轉在我的腦海\t \t \t \t \t \t \t \t。 \t \t}, – echobase 2009-08-14 18:40:06

1

一旦保存拖拽元素銷燬所有可拖動的元素做:

draggables.each(function(item){ 
    item.destroy(); 
});