jquery 显示/隐藏 - 如果条件为 true,则开始打开
本文关键字:true 开始 条件 显示 隐藏 如果 jquery | 更新日期: 2023-09-27 18:32:14
在我的 MVC3 剃须刀页面上处理 jQuery 显示过滤器复选框的隐藏框。
我有一个页面,根据是否选中这些复选框而变化,但如果取消选中任何复选框,我希望它们保持打开状态。
目前显示/隐藏有效,但是我如何根据选中任何复选框来确定页面是否加载并显示/隐藏它们?
我可以返回一个布尔值来说明是否有任何未选中的状态,并且真的在寻找一个 jQuery 天才来帮助我以最佳/最整洁的方式来实现这一目标。
下面是其中一个筛选器的示例,其中 modeFilterList 是每个复选框的通用列表,包含名称、ID 和选中状态:
<div id="filterwrap">
<h2 class="filter">Filter your results</h2>
@using (Html.BeginForm())
{
<ul id="filter">
<li>
<h2>
<a href="#">Modes</a></h2>
<div class="filtercontent">
@foreach (var item in modeFilterList)
{
<div class="radiorow">
@Html.CheckBox("mode_" + item.ID, item.Checked)
@item.Name
</div>
}
</div>
<!-- end of filtercontent -->
</li>
</ul>
}
</div>
这是用于显示和隐藏的 jquery 代码:
$('#filterwrap li h2').live('click', function (e) {
$(this).next('div.filtercontent').slideToggle() ;
e.preventDefault(); //stops page jumping to top
});
我想过在 h2 下方有一个包含真/假值的隐藏字段,可以在页面重新加载时读取,但必须有更好的方法来使用 jQuery 做到这一点!
你可以
使用 Jquery toggle() 函数或 $("componentID").show() 或 hide() 函数
好的,对我提出的解决方案并不疯狂,所以如果有人有更好、更整洁的东西,请告诉我。
因此,对于每个过滤器,我通过 viewbag 传递一个 bool 参数,以显示是否选中了任何复选框。
bool modeStatus = ViewBag.modeStatus;
然后我添加了一个带有类的隐藏字段:
<div id="filterwrap">
<h2 class="filter">Filter your results</h2>
@using (Html.BeginForm())
{
<ul id="filter">
<li>
@Html.Hidden("mode", modeStatus, new { @class = "filteritem" })
<h2>
<a href="#">Modes</a></h2>
<div class="filtercontent">
@foreach (var item in modeFilterList)
{
<div class="radiorow">
@Html.CheckBox("mode_" + item.ID, item.Checked)
@item.Name
</div>
}
</div>
<!-- end of filtercontent -->
</li>
</ul>
}
</div>
和这个代码在(文档).ready
$("input.filteritem:hidden").each(function () {
if ($(this).val() == "True") {
$(this).nextAll('div.filtercontent').show();
}
});