frankiez
frankiez
  • 发布:2015-02-04 22:15
  • 更新:2015-02-04 22:15
  • 阅读:16290

mui-popover如何强制隐藏

分类:MUI

mui的popover只提供了toggle,也就是说每次调用只能根据现有的状态决定是显示还是隐藏。这显然是一个没人性,噢不,是不人性化的设计。

之前在官方ASK里看到有人提供了解决方法,是这么说的:

mui('#popover').popover('hide');

我当时就信了啊,结果实验发现和toggle的效果一样,还是一次弹出一次隐藏。于是乎打开mui.js开始读源码。读到4845行,差点没吐出一口老血……你们看看这代码:

    $.fn.popover = function() {  
        var args = arguments;  
        this.each(function() {  
            $.targets._popover = this;  
            if (args[0] === 'show' || args[0] === 'hide' || args[0] === 'toggle') {  
                togglePopover(this, args[1]);  
            }  
        });  
    };

这3个参数实际上并没有区别,纯粹逗我玩啊!!

只好自己修改了一下,找到togglePopover的位置(4699行),然后与其同层级再加一个函数hidePopover。

    var hidePopover = function(popover) {  
        popover.classList.remove(CLASS_ACTIVE);  
        removeBackdrop(popover);  
    }

再将刚才4845行那个操蛋的逗你玩函数改成下面这样。

    $.fn.popover = function() {  
        var args = arguments;  
        this.each(function() {  
            $.targets._popover = this;  
            if (args[0] === 'show' || args[0] === 'toggle') {  
                togglePopover(this, args[1]);  
            }  
            else if(args[0] === 'hide') {  
                hidePopover(this);  
            }  
        });  
    };

这样就妥妥了,可以用hide参数来强制隐藏了。

mui('.mui-popover').popover('hide');

强制显示因为我暂时用不到,所以没写,需要的可以用类似方法自己添加。

7 关注 分享
DCloud_heavensoft 多串君 没豆 pmonkey 开心的哈鲁 x***@foxmail.com 1***@qq.com

要回复文章请先登录注册

ithorns

ithorns

楼主强大。
2015-10-13 11:18
villayong

villayong

我也遇到这样的问题,调用 mui('#popover').popover('hide'); 这个后是可以关闭一次,但再次调用这方法时,又显示出来了。
2015-06-26 18:25
逃逸的风

逃逸的风

回复 昵称_匿名 :
你会 ctrl+f 查找吗。。。 看到全是大写 一般都是常量 mui.js 有。。。
2015-05-30 17:51
昵称_匿名

昵称_匿名

上面的CLASS_ACTIVE,是什么意思啊,求解啊
2015-04-23 17:11
DCloud_heavensoft

DCloud_heavensoft

这个应该提交到github上去吧。@DCloud_MUI_CHB
2015-02-05 08:08