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 }