做的是層間彈出,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 }