Select2 下拉菜单在 Colorbox 中失败
Select2 dropdown fails inside Colorbox
当在 Colorbox 中使用 Select2 时,Select2 下拉选项无法显示。
我在应用程序的其他地方成功使用了 Select2 下拉菜单,但这是我第一次尝试在颜色框弹出窗口中使用它。
我已经尝试了此处列出的所有建议,但无济于事:https://github.com/jackmoore/colorbox/issues/474#issuecomment-25836400
我正在使用 jquery v3.1.1、jquery-ui v1.12.1、jquery.Select2 v4.0.3 和 jquery.colorbox v1.4.29。我的浏览器是IE 11.
我是这样打开colorbox的(我没有使用iframe,模态是"false"的默认值):
$.colorbox(
{
href: '/MyDomain/MyAction',
open: true,
scrolling: true,
width: '60%',
height: "60%",
onComplete: function () {
myJavascriptFunction();
}
});
运行 onComplete 的函数如下所示:
myJavascriptFunction = function () {
$('#SelectId option[value="0"]').prop('disabled', true);
$("#SelectId ").select2({
minimumResultsForSearch: Infinity, //turns off the search box
width: '400px',
theme: "classic",
dropdownAutoWidth: true,
templateResult: myMethod,
templateSelection: myOtherMethod
}).on('select2:select', function (e) {
yetAnotherMethod(e);
});
}
我怀疑这是一个显示问题。 Select2 方法调用似乎在工作——它具有正确的宽度,正确显示 selected 选项,当我单击它时,templateResult 和 templateSuggestion 方法都正确触发,并且它明显经历了同样的轻微闪烁当我在其他地方成功使用它们时,Select2 元素会改变颜色。当我单击 Select2 元素并在 DOM Explorer 中查看页面时,我可以看到存在 select2 html 以及选项。它们只是不可见。
从用户的角度来看,下拉菜单根本无法放下并显示 select 选项。
实际上我没有正确应用https://github.com/jackmoore/colorbox/issues/474#issuecomment-25836400的建议。
其中一个建议是更改 z-index,如下所示:
.select2-close-mask {
z-index: 10000;
}
.select2-dropdown {
z-index: 10001;
}
我以为我已经尝试过了,但仔细检查后我的 css 被 select2.css 文件覆盖,该文件在 之后加载我应用了我的z-index,因此覆盖了我想做的事情。
我什至尝试通过 jquery 调用应用 z-index,例如:
$('.select2-dropdown').css('z-index',10005);
在调用 Select2 之前和之后,但无论出于何种原因,这都没有效果。
但是加载我的样式更改后 select2.css 加载修复了问题。
使用下面的link输入搜索select2:
https://select2.org/troubleshooting/common-problems
添加代码:
$('#mySelect2').select2({
dropdownParent: $('#myModal')
});
当在 Colorbox 中使用 Select2 时,Select2 下拉选项无法显示。
我在应用程序的其他地方成功使用了 Select2 下拉菜单,但这是我第一次尝试在颜色框弹出窗口中使用它。
我已经尝试了此处列出的所有建议,但无济于事:https://github.com/jackmoore/colorbox/issues/474#issuecomment-25836400
我正在使用 jquery v3.1.1、jquery-ui v1.12.1、jquery.Select2 v4.0.3 和 jquery.colorbox v1.4.29。我的浏览器是IE 11.
我是这样打开colorbox的(我没有使用iframe,模态是"false"的默认值):
$.colorbox(
{
href: '/MyDomain/MyAction',
open: true,
scrolling: true,
width: '60%',
height: "60%",
onComplete: function () {
myJavascriptFunction();
}
});
运行 onComplete 的函数如下所示:
myJavascriptFunction = function () {
$('#SelectId option[value="0"]').prop('disabled', true);
$("#SelectId ").select2({
minimumResultsForSearch: Infinity, //turns off the search box
width: '400px',
theme: "classic",
dropdownAutoWidth: true,
templateResult: myMethod,
templateSelection: myOtherMethod
}).on('select2:select', function (e) {
yetAnotherMethod(e);
});
}
我怀疑这是一个显示问题。 Select2 方法调用似乎在工作——它具有正确的宽度,正确显示 selected 选项,当我单击它时,templateResult 和 templateSuggestion 方法都正确触发,并且它明显经历了同样的轻微闪烁当我在其他地方成功使用它们时,Select2 元素会改变颜色。当我单击 Select2 元素并在 DOM Explorer 中查看页面时,我可以看到存在 select2 html 以及选项。它们只是不可见。
从用户的角度来看,下拉菜单根本无法放下并显示 select 选项。
实际上我没有正确应用https://github.com/jackmoore/colorbox/issues/474#issuecomment-25836400的建议。
其中一个建议是更改 z-index,如下所示:
.select2-close-mask {
z-index: 10000;
}
.select2-dropdown {
z-index: 10001;
}
我以为我已经尝试过了,但仔细检查后我的 css 被 select2.css 文件覆盖,该文件在 之后加载我应用了我的z-index,因此覆盖了我想做的事情。
我什至尝试通过 jquery 调用应用 z-index,例如:
$('.select2-dropdown').css('z-index',10005);
在调用 Select2 之前和之后,但无论出于何种原因,这都没有效果。
但是加载我的样式更改后 select2.css 加载修复了问题。
使用下面的link输入搜索select2:
https://select2.org/troubleshooting/common-problems
添加代码:
$('#mySelect2').select2({
dropdownParent: $('#myModal')
});