2013-01-24 108 views
1

我一直试图解决这个问题,但无法完全结合我所拥有的。该页面是动态的,信息将从数据库中加载。我有一个调用复选框(class = registerbut),它在选中时直接在它下面切换(显示)一个div(hidey)。它工作正常,但页面重新加载后,无论检查状态如何,都会显示所有div(隐藏)。我只想要那些被检查过的显示,而不是全部显示。使用复选框在页面重新加载后保持div切换状态

<div style="width:150px; float:left; padding:0px 0 0px 10px;"> 
<b>Approve</b><br /> 
<b>Day 1</b><input type="checkbox" name="" value=""/> 
<b>Day 2</b><input type="checkbox" name="" value=""/><br /> 
<b>Day 3</b><input type="checkbox" name="" value=""/> 
<b>Day 4</b><input type="checkbox" name="" value=""/><br /> 
<b>Day 5</b><input type="checkbox" name="" value=""/> 
<b>Day 6</b><input type="checkbox" name="" value=""/><br /> 
<b>Day 7</b><input type="checkbox" name="" value=""/> 
<b>Day 8</b><input type="checkbox" name="" value=""/><br /> 
<b>Approve All Dates</b><input type="checkbox" name="" value=""/><br /> 

<br /> 
</div> 
<input type="checkbox" class="registerbut" name="toggle" style="margin-top:8px;">Approve 


<div class="hidey" style="width:500px; float:left;margin-bottom:10px; padding:0px 0 0px 10px;height:20px; display:none;"> 
<b>This is where we can put the information for e-signature part of the deal</b><br /> 
</div> 

这确保下一个/后面的div(hidey)是唯一显示的div。

$('.registerbut').change(function(){ 
    $(this).next('.hidey').toggle();}) 

及以下保持股利(hidey)依然显示在页面重载 - 但随后显示了所有“hidey”申报单,无论选中状态的。

$(document).ready(function() { 
$('.hidey').toggle($(".registerbut").is(":checked"));}); 

$(".registerbut").click(function() { 
$('.hidey').toggle('fast');}); 

感谢您的任何帮助。

+0

你将不得不在某处存储状态。它看起来并不像你使用的ASP.NET,所以你不能使用会话或视图状态,你可能不能使用HTML5存储,所以......这是饼干! –

+0

谢谢。我之前没有使用Cookie。最好的办法是什么?谢谢你的帮助。 – KMP

回答

2

http://jsfiddle.net/ExplosionPIlls/xEfRK/

更新.change方法使用显示/隐藏明确以选中状态,而不是使用.toggle

if ($(this).is(":checked")) 

然后,$(".registerbut").trigger('change');在页面加载将工作就像你所需要的。

+0

谢谢,EP!有用。花了我一下,但了解你是如何做到的。我将show/hide更改为$ hidey.slideDown(“fast”);和$ hidey.slideUp(“fast”);它似乎工作正常。我想它可以在没有Cookie的情况下工作?再次感谢。 – KMP

+0

由于某种原因,这不适用于safari。 – KMP

相关问题