0

我有,最好由這個小提琴,我偶然發現說明了一個問題:jQueryUI的可拖動/可棄得到最高下降DIV

http://jsfiddle.net/JSFU4/3/

這就是,當我draggind一個對象,並懸停在其可棄即使它們之間存在分隔,也會檢測到該分隔。我想避免這種情況。

從我所瞭解的閱讀文檔中,沒有現成的解決方案來做到這一點,但也許一個選項可能是得到'真正的'最上面的div在拖動元素被刪除並避免行動,如果它是溢出格。 (但這只是一個想法)。

換句話說,說我有一個投擲的DIV稱爲可放開-DIV,一個div是在它的上面叫上頂級的非可棄-DIV ...我可以檢測到這種在下降功能?

dropped: function(ev, ui){ 
    // somehow detect if the first target to receive the draggable event 
    // is #on-top-non-droppable-div, and don't do anything if it is. 
} 

回答

4

也許這就是適合您的需要:

$(function() { 
    $('.drag').draggable(); 
    $('.drop, .overlay').droppable({ 
     tolerance: 'touch', 
     hoverClass: 'drop-hover', 
     accept: '.drag', 
     drop: function (event, ui) { 
      if ($(this).hasClass('overlay')) { 
       ui.draggable.draggable({ 
        revert: true 
       }); 
      } else { 
       ui.draggable.draggable({ 
        revert: "invalid" 
       }); 
      } 
     } 
    }); 
}); 

DEMO

這裏例如設置tolerance: 'pointer',

DEMO

+0

嘿,感謝這一點。我不願意在疊加層上設置droppables,因爲其中有很多...更糟糕的是,有些應該讓可拖動的通過。這是一個可行的解決方案,但我認爲最重要的方面是減輕重量。 – alemangui

+0

你可以使用'document.elementFromPoint',這是給你的想法:http://jsfiddle.net/JSFU4/10/但是,然後行爲可能不完全是你所期待的。無論如何,即使有很多元素,將可插入插件設置爲.overlay也不應該成爲問題。 –