feat/dropdown-mulit
sight 2025-09-05 00:24:21 +08:00
parent 99d5974092
commit 3c64d33e6e
2 changed files with 16 additions and 3 deletions

View File

@ -395,13 +395,16 @@ layui.define(['i18n', 'jquery', 'laytpl', 'lay', 'util'], function(exports) {
var options = that.config;
var mainElem = thisModule.findMainElem(id);
if(resizeObserver){
resizeObserver.unobserve(options.elem[0]);
}
// 若存在已打开的面板元素,则移除
if (mainElem[0]) {
mainElem.prev('.' + STR_ELEM_SHADE).remove(); // 先移除遮罩
mainElem.remove();
options.elem.removeData(MOD_INDEX_OPENED);
if(resizeObserver){
resizeObserver.unobserve(options.elem[0]);
resizeObserver.unobserve(mainElem[0]);
}
delete dropdown.thisId;

View File

@ -876,7 +876,7 @@
return null;
}
var ATTR_NAME = 'lay-resizeobserver-key';
var ATTR_NAME = 'lay-' + namespace + '-resizeobserver-key';
var handlerCache = {};
var o = new ResizeObserver(function (entries) {
@ -905,6 +905,7 @@
element.setAttribute(ATTR_NAME, attrValue);
}
// 使用同一个观察者实例多次观察同一个元素,不会重复添加
handlerCache[attrValue] = callback;
o.observe(element);
},
@ -924,11 +925,20 @@
delete handlerCache[attrValue];
}
element.removeAttribute(ATTR_NAME);
o.unobserve(element);
},
disconnect: function () {
for (var key in handlerCache) {
if (lay.hasOwn(handlerCache,key)) {
delete handlerCache[key];
var elem = document.querySelector('[' + ATTR_NAME + '="' + key + '"]');
if(elem){
elem.removeAttribute(ATTR_NAME);
}
}
}
o.disconnect();
handlerCache = {};
}
});
};