Jquery UI Draggable:将帮助器对齐鼠标位置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jquery UI Draggable:将帮助器对齐鼠标位置相关的知识,希望对你有一定的参考价值。
使用jQuery我有一个可拖动的元素。它是一个大小为200 x 40的div。当然,用户可以通过单击div中的variuos位置来开始拖动此div。我想要的是当startdrag事件发生时,无论用户开始拖动的div在哪里,助手(克隆)div总是以相同的方式与光标对齐。
因此,在mousedown之后,帮助者的顶部和左侧值必须与鼠标x和y相同。我用这个coffeescript代码试过这个:
onStartDrag: ( e, ui ) =>
ui.helper.css
left: e.clientX
top: e.clientY
console.log( e )
但它不起作用,我的猜测是这种情况正在发生,因为我放入的值由于鼠标移动而被可拖动插件直接覆盖。
有任何想法吗?
在尝试了Amar的回答并意识到它搞砸了与droppable
的互动后,我深入挖掘,并发现有一个专门用于支持这个名为cursorAt
的选项。
$('blah').draggable
helper: ->
... custom helper ...
cursorAt:
top: 5
left: 5
这将帮助器的左上角放置在光标上方和左侧5个像素处,并与droppable
正确交互。
http://api.jqueryui.com/draggable/#option-cursorAt
让我们在信用到期时给予信任。谢谢,jquery-ui邮件列表档案!
https://groups.google.com/forum/#!topic/jquery-ui/Evb94G_QvNw
尝试这样设置,
start: function (event, ui) {
$(ui.helper).css("margin-left", event.clientX - $(event.target).offset().left);
$(ui.helper).css("margin-top", event.clientY - $(event.target).offset().top);
}
看看这个jqFAQ.com,它会对你更有帮助。
我找到了一个解决方案,这很容易,如果你使用可排序的插件,你可以像这样修复帮助位置:
sort: function(e, ui) {
$(".ui-sortable-handle.ui-sortable-helper").css({'top':e.pageY});
}
我同意@roverv。
这对我很好。
$('.js-tire').draggable
tolerance: 'fit',
appendTo: 'body',
cursor: 'move',
cursorAt:
top: 15,
left: 18
helper: (event) ->
$('<div class="tire-icon"></div>').append($('<img src="/images/tyre_32_32.png" />'))
start: (event, ui) ->
if $(event.target).hasClass 'in-use'
$('.js-send-to-maintenance-box').addClass 'is-highlighted'
else
$('.ui-droppable').addClass 'is-highlighted'
stop: (event, ui) ->
$('.ui-droppable')
.removeClass 'is-highlighted'
.removeClass 'is-dragover'
这对我有用:
appendTo:'body'
像这样:
$(this).draggable({
helper: "clone",
cursor: "move",
appendTo: 'body'
});
以上是关于Jquery UI Draggable:将帮助器对齐鼠标位置的主要内容,如果未能解决你的问题,请参考以下文章
jQuery-ui-draggable 将像素值转换为百分比
jQuery UI:将 Selectable 与 Draggable 结合起来
如何在 jQuery UI 中使用 Draggable 和 Droppable 将拖动的 li 添加到可放置的 ui 中?