在这些 div 中的 select 框中动态加载选项后如何 show/hide div 元素?
How to show/hide div element after dynamically loading options in select box inside these div's?
我在 4 个 div 中有 4 个下拉列表,我想在从上到下的下拉选择中隐藏和显示此 div。如果用户更改第一个下拉列表中的选项,则应显示紧接的下一个 div,并且紧随其后 div 的 div 应该 fadeOut()。
[情况-每个下一个下拉列表都充满了选项,具体取决于在父下拉列表中动态选择的选项]
现在我需要尽可能短的 Jquery 代码,因此我尝试了这个....
How to select all div element after some specific number of div elements?
并根据我的代码做了一些更改 situation.Here 是代码....
Html:
<div class="wrapper-inner">
<div class="OrganisationWrapper onChangeHideWrapper" id="OrganisationWrapper" data-title="1">
@*data-title is used as index for show/hide on Ddl change*@
@Html.DropDownListFor(model => model.OrgId, new SelectList(Model.Organisations, "Key", "Value"), "Select Organization..!", new { id = "Organisation", @class = "selectpicker", data_style = " btn-info", data_live_search = "true" })
</div>
<div class="SpaceWrapper onChangeHideWrapper" id="SpaceWrapper" data-title="2">
@Html.DropDownListFor(model => model.SpaceId, new SelectList(string.Empty, "Value", "Text"), "Loading Space..!", new { id = "Space", @class = "selectpicker", data_style = " btn-info", data_live_search = "true" })
</div>
......
</div>
JQuery:
$("#Organisation").change(function () {
if ($(this).length > 0) {
index = $(this).parent(".onChangeHideWrapper").attr("data-title");
$('.wrapper - inner .onChangeHideWrapper:gt(' + index + ')').fadeOut();
}
else{
$('.onChangeHideWrapper').fadeOut();
}
}
$("#Space").change(function () {
if ($(this).length > 0) {
index = $(this).parent(".onChangeHideWrapper").attr("data-title");
$('.wrapper - inner .onChangeHideWrapper:gt(' + index + ')').fadeOut();
}
else{
$('.onChangeHideWrapper').fadeOut();
}
}
但是 fadeOut() 不工作。谁能帮我解决这个问题?
提前致谢
如果您使用相对于已更改的 select 的操作,您可以大大简化此操作。
- 除第一个 select 或
外,您需要先隐藏所有内容
- 当select变化时,查看
val()
是否为空串。
- 如果 selection 在下一个 div 中淡出(使用
closest('div').next()
)
- 如果它是空白的,使用
nextAll()
淡出所有后续的divs
例如
$(document).ready(function () {
$('.onChangeHideWrapper:gt(0)').hide();
$('.selectpicker').change(function () {
if ($(this).val() != "") {
$(this).closest('.onChangeHideWrapper').next().fadeIn();
} else {
$(this).closest('.onChangeHideWrapper').nextAll().fadeOut();
}
});
});
我在 4 个 div 中有 4 个下拉列表,我想在从上到下的下拉选择中隐藏和显示此 div。如果用户更改第一个下拉列表中的选项,则应显示紧接的下一个 div,并且紧随其后 div 的 div 应该 fadeOut()。 [情况-每个下一个下拉列表都充满了选项,具体取决于在父下拉列表中动态选择的选项] 现在我需要尽可能短的 Jquery 代码,因此我尝试了这个.... How to select all div element after some specific number of div elements? 并根据我的代码做了一些更改 situation.Here 是代码....
Html:
<div class="wrapper-inner">
<div class="OrganisationWrapper onChangeHideWrapper" id="OrganisationWrapper" data-title="1">
@*data-title is used as index for show/hide on Ddl change*@
@Html.DropDownListFor(model => model.OrgId, new SelectList(Model.Organisations, "Key", "Value"), "Select Organization..!", new { id = "Organisation", @class = "selectpicker", data_style = " btn-info", data_live_search = "true" })
</div>
<div class="SpaceWrapper onChangeHideWrapper" id="SpaceWrapper" data-title="2">
@Html.DropDownListFor(model => model.SpaceId, new SelectList(string.Empty, "Value", "Text"), "Loading Space..!", new { id = "Space", @class = "selectpicker", data_style = " btn-info", data_live_search = "true" })
</div>
......
</div>
JQuery:
$("#Organisation").change(function () {
if ($(this).length > 0) {
index = $(this).parent(".onChangeHideWrapper").attr("data-title");
$('.wrapper - inner .onChangeHideWrapper:gt(' + index + ')').fadeOut();
}
else{
$('.onChangeHideWrapper').fadeOut();
}
}
$("#Space").change(function () {
if ($(this).length > 0) {
index = $(this).parent(".onChangeHideWrapper").attr("data-title");
$('.wrapper - inner .onChangeHideWrapper:gt(' + index + ')').fadeOut();
}
else{
$('.onChangeHideWrapper').fadeOut();
}
}
但是 fadeOut() 不工作。谁能帮我解决这个问题?
提前致谢
如果您使用相对于已更改的 select 的操作,您可以大大简化此操作。
- 除第一个 select 或 外,您需要先隐藏所有内容
- 当select变化时,查看
val()
是否为空串。 - 如果 selection 在下一个 div 中淡出(使用
closest('div').next()
) - 如果它是空白的,使用
nextAll()
淡出所有后续的divs
例如
$(document).ready(function () {
$('.onChangeHideWrapper:gt(0)').hide();
$('.selectpicker').change(function () {
if ($(this).val() != "") {
$(this).closest('.onChangeHideWrapper').next().fadeIn();
} else {
$(this).closest('.onChangeHideWrapper').nextAll().fadeOut();
}
});
});