layui的layer.close(index)无法关闭弹出层一种可能

做的是层间弹出,type是1,是个弹出选择框

然后用this.index=open({...})方式记录了index,然后在点击确定的时候关闭整个弹出层。

然后很奇怪的在另一个页面能关闭,在这个岗位页面关闭不了。

自己尝试找到弹出的最顶层,然后隐藏,但发现layer关闭后就会销毁自己添加的标签,自己找比较麻烦,遂放弃。

然后在确定按钮事件里打印this.index,能打印出来,一直是4。

反复调试中,找到弹出层最外层,发现其id是“xxxxxx1”。。。。

有些疑惑,在控制台直接layer.close(1),弹出层关闭!

。。。。T M D 不知道为什么,我页面的这个button点击一次触发4次!然后我在layer.open里加了id,防止其重复弹出,倒是不重复弹出了,但每次执行layer.open都会返回一个新的index,覆盖原来的。

。。。。还非常整齐的,每次点击触发4次click事件!

对不上自然关闭不了。。。

最后经过思考,传入弹出层内一个元素,向上找到弹出层最外层的div,其id为layui-layer{index}的形式,获取其id,获取id最后的数字,以此关闭。问题完美解决

function closeLayer(jq){
    let index=0
    let p=jq
    while(!p.hasClass("layui-layer-page")){
        p=p.parent()
        if(!p){
            console.error("传入的jq对象没有在layer里,其父级已经为空")
            return
        }
        index++
        if(index>100){
            console.error("传入的jq对象没有在layer里,100次向上查找未找到layer的div")
            return
        }
    }
    let id=p.attr("id")
    console.info(id)
    index=1
    let str
    while(index<id.length){
        str=id.substr(index*-1)
        if(isNaN(str)){
            str = id.substr((index-1)*-1)
            break
        }
        index++
    }
    console.info(str)
    layer.close(str)
    return str
}

 

posted @ 2022-01-05 17:22  风中的雪糕  阅读(2352)  评论(0编辑  收藏  举报