删除拖动的元素并使用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' });
我编辑了你的小提琴 。