2012-06-23 73 views
6

因此,有一些事件,我可以使用處理拖&下降:如何風格拖動的元素

https://developer.mozilla.org/en/DragDrop/Drag_and_Drop

有一個drag事件,這是在元素被拖動的時間發射。我可以控制源元素樣式或目標可拖放容器,但我怎樣樣式化由瀏覽器創建的「ghost」元素?

我希望當元素是通過非可拖動區域從它刪除了「已禁用」圖標,並用「光標移動」更換圖標

這是我到目前爲止有:

http://jsfiddle.net/YkaCM/

enter image description here

回答

2

不太清楚,不過dataTransfer對象包含一個名爲mozCursor屬性其他瀏覽器。這允許您在拖動狀態下更改光標,但是這是一個Mozilla屬性。

https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/mozCursor

使用這可以在以下位置中找到的一個例子,該設置是在dragstart改變(設置爲使用默認的「箭頭」光標),dragover(設置爲使用自動拖動光標(用箭頭複印件))和dragleave(重置爲默認使用 '箭頭' 光標):

http://jsfiddle.net/YkaCM/4/


嘗試回答:
Javascript: How can I set the cursor during a drag & drop operation on a website?


更新了以下您的dragover:

$('#droppable').bind('dragover', function (e) { 
    $(this).addClass('over'); // new 

    ... 

http://jsfiddle.net/YkaCM/1/

+0

感謝,這解決了我認爲是一個瀏覽器故障,但它並沒有解決我的問題:P – Alex

+0

我不認爲你可以風格的'鬼'元素。在測試時打開Firebug時,它看起來沒有顯示HTML的任何變化。你有什麼樣的例子你想達到什麼目的? – JonWarnerNet

1

基本上你要應用到新創建的元素是#droppable兒子特定的風格?

#droppable div { here your code } 
+0

不..我會發佈一個截圖,以清除它 – Alex

13

,因爲它是的元素是什麼樣子時,開始拖動一個位圖/複製不能直接樣式這樣的:

http://jsfiddle.net/2EvGP/

編輯:

你實際上可以通過在拖動開始時簡單地改變元素的樣式來實現此目的:http://jsfiddle.net/LULbV/

$('#draggable').bind('dragstart', function (e){ 

    [Set style here] 

    setTimeout(function(){ 
    [Reset style here] 
    }, 1); 

    ... 

}); 

這在Chrome 19中完美地工作,並根據您在Firefox 13中拖動的方式顯示樣式更改。您需要在拖放時重置拖動元素的樣式。

(注意:我有一個非常快的計算機,所以我不知道這黑客仍然較慢的機器上工作)

+0

工作很好,謝謝...嘗試使用setDataImage方法(和其他dataTransfer方法)之前使用此解決方案與混合結果。在DnD/Data Transfer API中似乎有一些奇怪的行爲。 –