在我的导航栏中,我有一个可滚动的下拉列表。一旦用户将鼠标悬停在它上面,它就会出现,并且可以上下滚动以选择链接。 它在所有桌面浏览器中都能很好地工作,但是在iPad上显示下拉列表时,它会卡住,用户无法上下滚动。
这是我使用的JS:
var maxHeight = 400; $(函数(){
$(".dropdown > li").hover(function() {
var $container = $(this),
$list = $container.find("ul"),
$anchor = $container.find("a"),
height = $list.height() * 1.1, // make sure there is enough room at the bottom
multiplier = height / maxHeight; // needs to move faster if list is taller
// need to save height here so it can revert on mouseout
$container.data("origHeight", $container.height());
// so it can retain it's rollover color all the while the dropdown is open
$anchor.addClass("hover");
// make sure dropdown appears directly below parent list item
$list
.show()
.css({
paddingTop: $container.data("origHeight")
});
// don't do any animation if list shorter than max
if (multiplier > 1) {
$container
.css({
height: maxHeight,
overflow: "hidden"
})
.mousemove(function(e) {
var offset = $container.offset();
var relativeY = ((e.pageY - offset.top) * multiplier) - ($container.data("origHeight") * multiplier);
if (relativeY > $container.data("origHeight")) {
$list.css("top", -relativeY + $container.data("origHeight"));
};
});
}
}, function() {
var $el = $(this);
// put things back to normal
$el
.height($(this).data("origHeight"))
.find("ul")
.css({ top: 0 })
.hide()
.end()
.find("a")
.removeClass("hover");
});
});
我不知道我是否正确解释过(英语不是我的第一语言),但你可以在https://jsfiddle.net/x7L4zgfk/1/上看到我的意思
答案 0 :(得分:1)
从JavaScript - mousemove event not triggered on iPad/iPhone
复制只需使用jquery.event.move即可。移动事件提供了一种简单的设置方法 鼠标和触摸设备上的按下 - 移动 - 释放交互。那么你 不必担心用户使用哪种设备。