2009-08-18 62 views
5

我有一個jQuery UI draggable和幾個單獨定義的droppables。由於其中一個可放置物配置爲tolerance: 'intersect',因此可拖放物可能會同時放入多種可放置物。如何防止觸發多個jQuery UI droppables?

什麼是最好的方法來防止非預期的droppables射擊?基本上,我想優先考慮droppables,以便在觸發另一個droppable的情況下不會觸發tolerance: 'intersect'的droppables。

更新 - 更多信息,以澄清事情:

  • 所有droppables的除了一類的投擲的有tolerance: 'intersect'配置tolerance: 'pointer'

  • 原因一類的投擲的有tolerance: 'intersect'是,droppables真的窄,用戶有問題tolerance: 'pointer'找到他們。

  • 將droppables進一步分開不是一個選項。

  • 的droppables沒有重疊,但將可拖動的是大到足以重疊的可投放與tolerance: 'intersect'在鼠標指針位於另可投放與tolerance: 'pointer'。以這種方式最多可以觸發兩個投擲物。

  • 用戶界面的佈局使用戶的意圖可以通過忽略可觸發條件來確定,如果另一個可觸發條件被觸發;即如果用戶將鼠標指針移動到與tolerance: 'pointer'相關聯的可投放位置,則可以安全地假定他/她打算將其放在那裏。問題是,我無法弄清楚如何忽略不需要的droppable。

+0

你可以告訴我這幾樣問題的最佳解決方案,因爲我有同樣的問題,,如果你還記得:) – 2015-11-18 07:22:24

回答

0

將它們從物理上彼此遠離,以使它們不能同時落下。否則,你應該如何確定用戶的意圖?你打算計算每個相交可拖拽的可拖動的百分比嗎?

+0

傑森您好,謝謝您的回答。請參閱我原始問題中的第一個更新,以獲取問題的答案。 – bryan 2009-08-18 07:09:21

+0

你可以拍攝你想要完成的畫面嗎? – Jason 2009-08-18 07:25:19

1

也許在的「次優選的」過事件可放開你可以檢查拖動也是在「最佳」可棄而如果是禁用「次優選的」可棄。

很抱歉的術語,只是爲了集思廣益。

7

over:,指定一個類來預期可放開和所有其他droppables刪除類:

$(".dragArea").not($(this)).removeClass("dragHover"); 
$(this).addClass("dragHover"); 

然後在drop:,檢查類設置:

if(!$(this).is('.dragHover')){ 
    return false; 
} 

這樣,只能觸發一次droppable。

+0

我可以確認這個工作(jquery-ui 1.9.1&jqery 1.8.2)謝謝 – Neograph734 2012-11-13 08:20:13