2010-07-12 93 views
0

我有动态页面。JQuery复选框问题

有多个复选框&我使用此脚本仅在复选框被选中时才显示其受到尊重的<div>

 $(document).ready(function() { 
      $("#checkbox$").click(function() { 
      if (this.checked) { 
       $('#appear_div$').fadeIn('slow'); 
      } 
      else { 
       $('#appear_div$').fadeOut('slow'); 
      } 
      }); 
     }); 

    // Here $ is unique ID number for each <div> as my content is dynamic & 
    // I am using {foreach} tag. 

现在,我有另一个父母,我希望所有上面出现。

但是,如果没有选中上面的复选框隐藏这个父div div。

这里是我使用该

function doInputs(obj){ 
var checkboxs = $("input[type=checkbox]:checked"); 
var i =0, box; 
$('#parent_div').hide();   
    while(box = checkboxs[i++]){ 
    if(!box.checked); 
    $('#parent_div').show(); 
    break;    
    } 
} 

此代码工作,除了这个问题精码...

说,

我检查复选框ID 1 --- > #parent_div显示--->#出现_div1显示 -

我选中复选框ID 2 ---> #parent_div显示--->#出现_div2显示 -

然后

我取消选中复选框ID 1 ---> #parent_div显示--->#appear_div1隐藏 -

我取消选中复选框ID 2 ---> #parent_div隐藏 - - >#appear_div2隐藏 -

然后再次IF

我取消选中复选框ID 2 ---> #parent_div显示--->#appear_div2展 -

现在,这里是问题...

即使复选框ID 1未选中我可以看到#parent_div中的#出现的div1。

这是为什么?我去哪里错了?

谢谢。

回答

1
$(document).ready(function() { 
     $("#checkbox$").click(function() { 
     if (this.checked) { 
      $('#appear_div$').fadeIn('slow'); 
     } 
     else { 
      $('#appear_div$').fadeOut('slow'); 
     } 
     if ($("input:checkbox:checked").length){ 
      $('#parent_div').show(); 
     } else { 
      $('#parent_div').hide(); 
     } 
     }); 
    }); 

demo

+0

不需要$( “输入:复选框:选中”)。长度== 0,只需使用if($(! “输入:复选框:选中”)长度) – redsquare 2010-07-12 09:15:00

+0

啊是啊!好主意......修正!...谢谢... :) – Reigel 2010-07-12 09:19:07

+0

谢谢..问题已修复。 – MANnDAaR 2010-07-12 10:25:35