删除拖动的元素并使用jQuery重置光标

我使用jQuery拖放时遇到问题。 这是一个非常简单的小提琴,显示了我的意思( http://jsfiddle.net/Znt44/1/ ):

$('#drop').droppable({ drop: function (e, ui) { ui.draggable.remove(); } }); $('#drag').draggable({ cursor: 'move' }); 

如您所见,我在拖动时将光标设置为十字准线,这有效。

如果您将绿色框放在红色框上,光标将不会重置。 看起来光标也附加到红色框,并且不会重置。

如果您将绿色框放在其他位置,光标将完全重置。

重置光标的正确方法是什么?

或删除有什么问题?

在我的情况下,我注意到在拖动它时强制在我的父元素上使用style="cursor:move" 。 所以我强制在drop方法结束时使用style="cursor:auto" (我的父元素是 ):

 $('body').css('cursor', 'auto'); 

我认为光标样式是附加到身体的“层”的问题。 我使用JQuery应用于当前拖动对象的类的样式在我的页面中解决了同样的问题:

  .ui-draggable-dragging { cursor:move} 

在这种情况下(在你的JSFiddle测试用例中)你可以注意到当你的拖动hover在droppable元素上时,光标是最高的z-position元素之一。

尝试改变顺序

 
drag me!

 
drag me!

而你看到了差异。 或者您可以使用.draggable()的zIndex属性。

如果你的真实案例很合适,我认为它可以是一个很好的替代解决方案,而不是重置主体元素上的游标,因为它更具体

尝试在您的droppable上添加cursor: auto

 $('#drop').droppable({ cursor: 'auto', drop: function (e, ui) { ui.draggable.remove(); } }); $('#drag').draggable({ cursor: 'move' }); 

我编辑了你的小提琴 。