滚动下拉菜单无法在iPad上运行

时间:2015-06-11 17:30:51

标签: jquery css ipad scroll hover

在我的导航栏中,我有一个可滚动的下拉列表。一旦用户将鼠标悬停在它上面,它就会出现,并且可以上下滚动以选择链接。 它在所有桌面浏览器中都能很好地工作,但是在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/上看到我的意思

1 个答案:

答案 0 :(得分:1)

JavaScript - mousemove event not triggered on iPad/iPhone

复制
  

只需使用jquery.event.move即可。移动事件提供了一种简单的设置方法   鼠标和触摸设备上的按下 - 移动 - 释放交互。那么你   不必担心用户使用哪种设备。

     

来源和示例:http://stephband.info/jquery.event.move/