2012-04-26 25 views
0

MVC3カミソリページのフィルタチェックボックスのjQuery表示非表示ボックスで作業しています。jquery show/hide - 条件がtrueの場合はオープン開始

私はこれらのチェックボックスがチェックされているかどうかによって変わるページを持っていますが、チェックボックスのいずれかがチェックされていないと開いたままにしておきたいです。

現在、表示/非表示は機能しますが、チェックボックスがオンになっていると表示/非表示になっているページが読み込まれるかどうかをどのように判断しますか?

これはチェックされていないかどうかを判断するためにブール値を返すことができ、実際にこれを達成するための最良の方法を提供する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

[OK]を、誰もが何かを持っているので、もし私は、に来ているソリューションに夢中ではありませんより良い、きちんとした、私に知らせてください。

したがって、フィルタごとに、ビューボックスを介してboolパラメータを渡して、チェックボックスが選択されているかどうかを示します。

bool modeStatus = ViewBag.modeStatus; 

Iは、クラスとの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> 

及び(ドキュメント)内でこのコード.ready

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

あなたはjQueryのトグル()関数または$(「COMPONENTID」)を使用することができます。ショー()または非表示()関数を

+0

おかげUtteshを。 show hideの部分はうまくいきますが、コードをきちんと整えることにします。私が実際に探しているのは、各セクション内のチェックボックスがオンになっているかどうかによって、表示されているページか隠されているページのそれぞれを最初に読み込むべきかどうかを判断することです。 –

+0

クラスを追加および削除する代わりに、slideToggleを使用するように上記のコードを更新しました。良い提案、ありがとう。ページの読み込み時のトグルステータスに関する質問を解決し続けるでしょう。 –

関連する問題