2013-06-29 36 views
0

如何防止在运行代码时不选中复选框? 我有一些div里面他们复选框,并要检查里面每个checkbexes和隐藏在同一时间的具体格,但是当我运行它,所有的复选框被选中:Jquery复选框,隐藏特定的div并选中div内的所有复选框

HTML:

<input type="checkbox" id="hide-and-checked">group 1 
<div id="one" class="hide-and-checked"> 
    <input type="checkbox" class="list_check" value="1">1 
    <input type="checkbox" class="list_check" value="2">2 
    <input type="checkbox" class="list_check" value="3">3</div> 
<br> 
<input type="checkbox" id="hide-and-checked">grup 2 
<div id="two" class="hide-and-checked"> 
    <input type="checkbox" class="list2" value="1">1 
    <input type="checkbox" class="list2" value="2">2</div> 

JS:

$(document).ready(function() { 
    function toggleDiv() { 
     var $this = $(this); 

     $("." + $this.attr('id'))[$this.is(':checked') ? 'hide' : 'show'](); 

     $(":checkbox").each(

     function() { 
      $(this).attr('checked', true); 
     }); 

    } 
    $('input:checkbox').each(toggleDiv).click(toggleDiv); 
}); 

这是目前:http://jsfiddle.net/oskar9/8k2HK/

+0

硒所有HTML和jQuery在http://jsfiddle.net/oskar9验证码/ 8k2HK/ – Oskar

+1

你重要的第一件事成员每个元素都有不同的id。两个元素不能有相同的ID。在你的代码中,两个复选框都有相同的ID –

+0

@oskar - 这是你在找什么:http://jsfiddle.net/8k2HK/9/ – Joe

回答

0

以启发的问题首先查看建议event.preventDefault()由于“防止复选框被检查..”。卜后来再读一遍,我明白你想要不同的东西。 “检查并隐藏”前面的步骤。我为这个问题准备了一个demo at jsFiddle。 “上复选框”控制“子复选框”有:

$("input.upper-box").on("change", function() { 
var $this = $(this); 
$this.next("div.sub-group") 
    .find(":checkbox") 
    .prop("checked", $this.prop("checked")) 
.end() 
.toggle("slow"); 
}); 

一个关于jQuery开发团队建议复选框一点需要注意的是,你应该使用prop()而不是attr()如果你的目标($ 1.6或更高版本) 。

+0

这将如何帮助? – Joe

+0

Thans to all,but anwer posted by @Fredrick is what I want :) – Oskar

+0

@oskar,您的欢迎。你可以通过评论赔偿部分来了解这有什么帮助。对于那些看不到任何行动的人来说;请选择正确的jQuery库(在1.9.1和onDomReady选项中测试) –

1
<input type="checkbox" id="hide-and-checked" checked="true" /> group 1 

<div id="one" class="hide-and-checked" > 
    <input type="checkbox" class="list_check" value="1"/>1 
    <input type="checkbox" class="list_check" value="2"/>2 
    <input type="checkbox" class="list_check" value="3"/>3 
</div> 

<br />   
    <input type="checkbox" id="hide-and-checked"/> grup 2 
<div id="two" class="hide-and-checked"> 

    <input type="checkbox" class="list2" value="1"/>1 
    <input type="checkbox" class="list2" value="2"/>2 

    </div> 

脚本

$(document).ready(function() { 

    $('input[id="hide-and-checked"]').each(function(){ 

    $(this).change(function(){toggleOperation(this)});  
    toggleOperation(this); 
}); 
function toggleOperation(ctrl)  
    { 
     var $this = $(ctrl);   
     if($this.is(':checked')) 
     { 
      $this.next().find(":checkbox").attr("checked",true); 
      $this.next().show(); 


     } 
     else 
     { 

      $this.next().hide();      $this.next().find(":checkbox").attr("checked",false); 
     } 
    } 

}); 

尝试以下链接

http://jsfiddle.net/Bhaarat/8k2HK/13/

+0

感谢您的帮助。我有我的观点:) – Oskar

+0

太好了,不客气。如果您觉得自己有答案,请将帖子标记为回复或赞成帖子。 – Bhaarat