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');
强制显示因为我暂时用不到,所以没写,需要的可以用类似方法自己添加。
5 个评论
要回复文章请先登录或注册
ithorns
villayong
逃逸的风
昵称_匿名
DCloud_heavensoft