jQuery UI可在溢出的Div中选择
我们有一个项目列表,需要允许用户选择多个项目。我们希望使用jQueryUISelectable交互,而不是使用带有multiselect属性的默认HTMLselect元素。我们把它都连接起来了,它工作得很好,除非列表很长,我们把它放在一个div中,这个div会在某个高度溢出。问题是,如果用户单击并拖动列表中的多个项目,并且他们希望能够选择不可见但位于div溢出部分的项目,如果他们将鼠标拖动到div之外,则不会自动滚动到“隐藏”位置div的某些部分与普通的multi-select元素类似 我毫不怀疑我们可以处理div的mousemove或mouseleave事件并手动滚动它,但我想知道是否有人知道自动执行此操作的方法,或者最简单的方法是什么 下面是一个JSFIDLE,它显示了什么不起作用:jQuery UI可在溢出的Div中选择,jquery,html,jquery-ui,selectable,Jquery,Html,Jquery Ui,Selectable,我们有一个项目列表,需要允许用户选择多个项目。我们希望使用jQueryUISelectable交互,而不是使用带有multiselect属性的默认HTMLselect元素。我们把它都连接起来了,它工作得很好,除非列表很长,我们把它放在一个div中,这个div会在某个高度溢出。问题是,如果用户单击并拖动列表中的多个项目,并且他们希望能够选择不可见但位于div溢出部分的项目,如果他们将鼠标拖动到div之外,则不会自动滚动到“隐藏”位置div的某些部分与普通的multi-select元素类似 我毫不怀
如果您单击项目1并向下拖动,一旦您离开演示div,我希望ul滚动以使项目6、7等开始显示。这是jQuery UI可选插件的已知问题-
jQueryUISortable确实提供了这一功能,所以您可能会看到在那里做了什么来提供帮助。jQuery UI票证有一个链接,其中包含用于在可排序插件中实现此功能的源代码。从可排序插件中的代码进行转换非常简单。我只是把它放在可选择的“启动”功能中:
$(window).mousemove(function(e) {
var sensitivity = 10, speed = 20, $d = $(document);
if (e.pageY - $d.scrollTop() < sensitivity) {
$d.scrollTop($d.scrollTop() - speed); // scroll up
} else if ($(window).height() - (e.pageY - $d.scrollTop()) < sensitivity) {
$d.scrollTop($d.scrollTop() + speed); // scroll down
}
if (e.pageX - $d.scrollLeft() < sensitivity) {
$d.scrollLeft($d.scrollLeft() - speed); // scroll left
} else if ($(window).width() - (e.pageX - $d.scrollLeft()) < sensitivity) {
$d.scrollLeft($d.scrollLeft() + speed); // scroll right
}
});
$(window).unbind('mousemove');
并不是完全偏离主题,但事实正是如此。也许有人可以分析它的代码,并检查它是否用一种简单的方法来实现。。