2012-04-26 56 views
0

在我的MVC3剃须刀页面上使用过滤器复选框的jQuery显示隐藏框。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做一个更好的办法!

回答

0

好吧,不是疯了有关解决方案我来,所以如果有人有什么更好,更整洁,让我知道。

因此,对于每个过滤器,我通过viewbag传递一个bool参数来显示是否选择了任何复选框。

bool modeStatus = ViewBag.modeStatus; 

我然后加入类hiddenfield:

<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> 

和(文件)内的代码。就绪

$("input.filteritem:hidden").each(function() { 
    if ($(this).val() == "True") {    
     $(this).nextAll('div.filtercontent').show(); 
    } 
}); 
2

你可以使用jQuery切换()函数或$(“COMPONENTID”)。显示()或隐藏()函数

+0

由于Uttesh。 show hide部分确实有效,但我会仔细整理代码。我真正想要的是确定是否每个人都应该首先在显示或隐藏的页面上加载,具体取决于每个部分中的任何复选框是否被选中? – 2012-04-26 09:10:54

+0

我已经更新了上面的代码来使用slideToggle,而不是添加和删除类。好的建议,谢谢。将继续寻找解决方案,以查询有关页面加载时的切换状态的查询。 – 2012-04-26 09:23:01