解决Mui中popover 顶部弹出菜单弹出位置不许确以及没法收回的问题

前言

最近公司的项目转向使用Hbuilder开发移动端项目,其中想要经过在顶部标题栏加入弹出菜单的方式,来定位长列表的位置,如图所示。
图片描述javascript

问题

Mui的功能貌似还不是很完善,在使用这个弹出菜单的时候,发现了一些很尴尬的问题:css

  1. 目录的跳转我是经过锚点实现的,可是在跳转以前,这个菜单一切正常,一旦触发跳转,那么整个菜单就会卡住没法收回,可是跳转功能正常。html

  2. 因为个人页面比较长,于是出现不在顶部使用弹出菜单时,弹出菜单位置像是不正确的状况,如图所示。
    图片描述java

解决办法

1.问题一的解决方案

对于问题一,个人解决方案是手动关闭弹出菜单,这里经过控制台查找出生成的mask的class .mui-backdrop以及弹出菜单项的class .mui-table-view-cell代码以下:app

//点击mask的触发事件
$(".mui-backdrop").click(function() {
    $("#topPopover").hide();
    $(".mui-backdrop").hide();
});
//点击菜单项的触发事件
$(".mui-table-view-cell").click(function() {
    $("#topPopover").hide();
    $(".mui-backdrop").hide();
});
虽然方法比较粗暴,可是能够解决这个问题,有更好的解决方案的但愿可以指正。

2.问题二的解决方案

对于问题二,个人解决方案是,将它定死~。 我经过使用js写入css样式,将其设为`absolute`便可解决。代码以下:
var uip = document.getElementById("topPopover"); //topPopover是popover 的最外层div
    uip.style.position = "absolute";

代码

主页面代码以下所示:ide

<!--头部-->
    <div class="mui-bar mui-bar-nav">
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
            <a id="menu" class="mui-action-menu mui-icon mui-icon-bars mui-pull-right" href="#topPopover"></a>
            <h1 class="mui-title" id="cityResult" class="" type='button'>xxx</h1>
    </div>
    <div class="mui-content">
        <!--体,省略-->
    </div>
    <!--右上角弹出菜单-->
    <div id="topPopover" class="mui-popover">
        <div class="mui-popover-arrow"></div>
        <div class="mui-scroll-wrapper">
            <div class="mui-scroll">
                <ul class="mui-table-view">
                    <li class="mui-table-view-cell">
                        <a href="#c1">行政区划简介</a>
                    </li>
                    <li class="mui-table-view-cell">
                        <a href="#c2">扶贫开发基本状况</a>
                    </li>
                    <li class="mui-table-view-cell">
                        <a href="#c3">贫困户地域分布状况</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>

解决以上两个问题的代码:ui

function setPopOverMenu() {
    var uip = document.getElementById("topPopover");
    uip.style.position = "absolute";
    $(".mui-backdrop").click(function() {
        $("#topPopover").hide();
        $(".mui-backdrop").hide();
    });
    $(".mui-table-view-cell").click(function() {
        $("#topPopover").hide();
        $(".mui-backdrop").hide();
    });
}

欢迎访问zhkmxx930的博客 ,初来实习,多请帮助~spa

相关文章
相关标签/搜索