2015-03-19 204 views
1

未觸發over事件的情況最好由以下jsbin來解釋。可拖放的事件在可拖動的可丟棄對象上被拖放並再次拖動之後,可以放棄的事件不能正常工作

執行以下操作:

  1. 拖動可拖動(黃色)在droppables(紅色和藍色),對在事件droppables改變他們的背景顏色爲綠色,就出來活動,他們改變自己背景顏色回來。

  2. 將可拖動的內容拖放(藍色)。

  3. 拖動可拖動的外部可拖拽(紅色),它應該將其背景顏色更改爲綠色,但它不會! over事件沒有被解僱,但是當你離開外面的droppable時,它的out事件會觸發。從那裏再次按預期工作。

我覺得這種行爲是一個錯誤。我應該創建一個錯誤票嗎?

編輯:

,如果我只是設置可投放的選項hoverClass相同的行爲也被實現。請參閱以下jsbin。這必須是一個錯誤,因爲行爲不一致。在拖放內容後,行爲是不同的。

+0

似乎是一個錯誤。在github中提出它。 jquery ui團隊將澄清 – 2015-03-19 12:10:08

+0

其已知問題。看看這個答案[這裏](http://stackoverflow.com/questions/17053289/jquery-droppable-greedy-not-working-as-expected#answer-17588198) – 2015-03-19 12:44:41

+0

@AnkitSaroch我不認爲這是與此答案有關。答案和已關閉的錯誤標籤狀態,如果可拖動的內容是在貪婪可放棄的內部釋放的,則所有父元素都不會收到放置事件。在我的jsbin中,這個工作正常,我希望它能像那樣工作。但是在將它放入內層droppable並拖拽新內層之後,外層droppable的over事件將不會觸發。 – daniatic 2015-03-19 13:04:28

回答

1

我想出了一個解決辦法:

通過調查行爲,必須有在一個沒有在下拉事件發生的事件進行一些邏輯。每次可拖動的進入一個貪婪的droppable時,應用一些邏輯來防止祖先droppables觸發他們的drop事件。在每個輸出事件中,該邏輯被重置並且在丟棄事件中丟失該重置。所以我從out事件中抽取了所需的部分,並將它們實施到drop事件中。

請參見下面的jsbin

我已經可以不打開一個bug票道歉。如果有人想這樣做,請繼續。

編輯:

ANKIT Saroch指出,已經有針對此問題的錯誤票,也有簡單的解決方法存在。在問題文本下面查看他的評論。