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
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM