2012-04-26 71 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