添加“点击转发”像下面为下拉式面膜的自毁在select2.js几乎解决了这个问题
$(document.elementFromPoint(e.clientX,e.clientY)).trigger("click");
$(document.elementFromPoint(e.clientX,e.clientY)).trigger("focus");的想法
详细的编辑如下。
首先找到创建下拉蒙版区域(线号:1557在我的js)。这将如下所示,并在self.close();之后添加上述两行。
// create the dropdown mask if doesn't already exist
mask = $("#select2-drop-mask");
if (mask.length === 0) {
mask = $(document.createElement("div"));
mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask");
mask.hide();
mask.appendTo(this.body);
mask.on("mousedown touchstart click", function (e) {
// Prevent IE from generating a click event on the body
reinsertElement(mask);
var dropdown = $("#select2-drop"), self;
if (dropdown.length > 0) {
self=dropdown.data("select2");
if (self.opts.selectOnBlur) {
self.selectHighlighted({noFocus: true});
}
self.close();
// The following two lines are newly added
// Adding this to forward through the mask
$(document.elementFromPoint(e.clientX,e.clientY)).trigger("click");
$(document.elementFromPoint(e.clientX,e.clientY)).trigger("focus");
e.preventDefault();
e.stopPropagation();
}
});
}
这不知何故解决了我的问题。
这可以在页面上的下拉菜单和其他元素之间很好地工作,但单击另一个下拉菜单时不能单击。