Jquery 如何使鼠标滚轮在不对焦时滚动为溢出:自动div?
我制作了一个jQueryUI菜单,当鼠标移到菜单项上时,它会显示div中每个选项的描述。我想这样做,用户可以使用鼠标滚轮滚动描述div,同时保持菜单项高亮显示,以便于导航。您可以在此处看到正在运行的代码: 更新 我最终得出的结论如下:Jquery 如何使鼠标滚轮在不对焦时滚动为溢出:自动div?,jquery,jquery-ui,Jquery,Jquery Ui,我制作了一个jQueryUI菜单,当鼠标移到菜单项上时,它会显示div中每个选项的描述。我想这样做,用户可以使用鼠标滚轮滚动描述div,同时保持菜单项高亮显示,以便于导航。您可以在此处看到正在运行的代码: 更新 我最终得出的结论如下: $('body').mousewheel(function(event, delta) { if (delta > 0){ // scroll direction is up $("#description").mCustomScro
$('body').mousewheel(function(event, delta) {
if (delta > 0){ // scroll direction is up
$("#description").mCustomScrollbar("scrollTo","top",{scrollInertia:3000});
} else {
$("#description").mCustomScrollbar("scrollTo","bottom",{scrollInertia:3000});
}
});
这使得滚动足够平稳,用户可以控制它,即使它在单次滚动后仍将继续滚动。您可以使用此插件:检测鼠标滚轮,然后获取div的
滚动顶部并手动滚动它。可能是这样的:
$('body').mousewheel(function(event, delta) {
var thisTop = $("#description").scrollTop();
if (delta > 0){ // scroll direction is up
$("#description").scrollTop(thisTop - delta);
}
else {
$("#description").scrollTop(thisTop + delta);
}
});
编辑
你的插件有一个scrollTo
方法,可以用来代替scrollTop
。尝试替换此代码:
$("#description").scrollTop(thisTop - delta);
为此:
$("#description").mCustomScrollbar("scrollTo",thisTop - delta);
不幸的是,添加focus()似乎没有任何作用。另外,我在我的网站上使用mousewheel插件,因为我使用的是自定义滚动条。也许你可以想出一种方法,在mousewheel事件中使用.scrollTop()
,滚动div?是的,这只会在任何其他事件(如mousewheel向上或向下)移除焦点之前提供焦点。然而,我编辑了我的答案,以展示它的外观。这似乎应该有效,但什么也没发生。它肯定在开火;我在if语句中放了一个console.log。然而,即使我使用scrollTop手动将div设置为任何特定的数字,这也不起作用。例如,$(“#description”).html(desc).scrollTop(300)代码>什么都不做。更正:我正在使用一个名为mCustomScrollbar的插件,使用该插件时手动滚动条不起作用,否则它会起作用<代码>$(“.description”).html(结果).mCustomScrollbar({scrollInertia:200}).scrollTop(300)代码>不起作用,但如果没有mCustomScrollbar,它会起作用。但是,无论我是否使用插件,您提供的功能都不起作用。
$("#description").mCustomScrollbar("scrollTo",thisTop - delta);