使用jQuery Sortable拖动时是否可以获取光标坐标?
我有一个可滚动的div,它具有精确的间隔滚动。我想在用户拖动靠近滚动div底部的元素时向下滚动80px,如果靠近顶部则向上滚动。
$(allIds).sortable({
connectWith: ".allLists",
zIndex: 2,
cursorAt: function(e) {
if(e.top < 80) {
myScrollFunction('up');
}
if(e.top > 500) {
myScrollFunction('down');
}
}
}).disableSelection();
上面的代码应该会让你知道我想要实现的目标。也许我想要实现的内容会与内置的可排序滚动功能冲突?
编辑:我认为cursorAt是错误的选择。我需要一个'move'选项来添加一个函数。或类似的东西......
$(allIds).sortable({
connectWith: ".allLists",
zIndex: 2
}, function(e) {
if(e.position().top < 80) {
myScrollFunction('up');
}
if(e.position().top > 500) {
myScrollFunction('down');
}
}).disableSelection();
但是,如果有效,它可能只会在完成可排序事件后触发,这是无用的。
答案 0 :(得分:1)
要回答我自己的问题,我就是这样做的。
在可滚动div上创建了一个与可排序函数
分开的mousemove事件侦听器在我使用的可排序函数start:和stop:切换全局变量的真或假
然后,只要鼠标在可滚动div内移动,它就会检查拖动是否为true,从而触发myScrollFunction()。
var dragging = false;
var dragScroll = function() {
$("#scrollableDiv").mousemove(function(e) {
if(dragging) {
if((e.pageY-$(this).offset().top)<80) {
myScrollFunction('up');
}
if((e.pageY-$(this).offset().top)>500) {
myScrollFunction('down');
}
}
});
};
$(allIds).sortable({
start: function() { dragging = true; },
stop: function() { dragging = false; },
connectWith: ".allLists",
zIndex: 2
}).disableSelection();
这解决了我的问题,但是现在在div滚动之后,我无法将该项目放入其他列表中。无论如何,我会把它作为一个单独的问题来检查。