添加选中全部并取消选中复选框内的所有选项
我正在尝试创建一个全选,取消选择所有选项,就像我们在电子邮件收件箱中看到的一组复选框。 我已经为此添加了一个示例。 我试图得到的工作模型是当我点击复选框时,它应该选择并取消选择具有特定值的组。 即使我们取消选中列表中的任何单个名称,也应该取消选中主“全选”复选框。 我已经添加了一个jsfiddle,但它不能正常工作。
$(document).ready(function(){
$("#selectAll").live("click",function(e){
e.preventDefault();
e.stopImmediatePropagation();
var clickedValue=$(this).attr('class');
clickedValue=clickedValue.replace("select", "");
$("#modalEntity").attr("value", "group"+ clickedValue).attr("checked", true);
});
});
http://jsfiddle.net/EBxSu/
我更新了代码,删除了多个ID并处理了所请求的各种场景(如果用户选择了某个子项,请清除全选复选框)。 还使用.on()而不是.live()更新了您的jQuery。
jQuery看起来像:
$(function(){
$('.selectAll').on('click', function(evt){
var group = $(this).attr('data-group'),
isChecked = !!($(this).prop('checked'));
$('input[value="' + group + '"]').prop('checked', isChecked);
})
$('.entity').on('click', function(evt){
var group = $(this).attr('value'),
siblings = $('input[value="' + group + '"]'),
isChecked = true;
siblings.each(function(idx, el){
if(!$(el).prop('checked')) {
isChecked = false;
return;
}
})
$('.selectAll[data-group="' + group + '"]').prop('checked', isChecked);
})
})
并更新了HTML:
<ul>
<li>
Country
<ul>
<input type="checkbox" class="selectAll" data-group="group1">Select/Deselect All Country
<li>
<input class="entity" type="checkbox" value="group1" name="India">India
<input class="entity" type="checkbox" value="group1" name="UAE">UAE
...
</ul>
</li>
</ul>
这里是小提琴:http://jsfiddle.net/nBh4L/2/
谢谢! 插口
更新 (改变生活上和一些重命名)
首先,你不应该有像这样的具有相同ID的元素:
<input id="modalEntity" class="entity1" type="checkbox" value="group1" name="India">India
<input id="modalEntity" class="entity2" type="checkbox" value="group1" name="UAE">UAE
我重写了这个jQuery代码:
$(document).ready(function() {
"use strict";
$("input.select").on("click", function() {
$(this).siblings().find("input.entity").prop("checked", $(this).is(":checked"));
});
$("input.entity").on("click", function() {
var $entityGroup = $(this).siblings().andSelf();
$(this).parent().siblings("input.select").prop("checked", $entityGroup.length === $entityGroup.filter(":checked").length);
});
});
.prop()只能用于jQuery 1.6及更高版本。
我也重写了一下HTML,看看这里更新的jsFiddle:http://jsfiddle.net/sQVe/EBxSu/8/
只是评论一下,如果我错过了一些东西,但我认为这是你所追求的。
我只为国家做过。 HTML:
<ul>
<li>
Country
<ul>
<input type="checkbox" id="selectAll" class="select1">Select/Deselect All Country
<li>
<input class="entity1 countries" type="checkbox" value="group1" name="India">India
<input class="entity2 countries" type="checkbox" value="group1" name="UAE">UAE
</li>
</ul>
</li>
<li>
JavaScript的:
$(document).ready(function(){
$("#selectAll").click(function(){
if(!$('.countries').attr('checked'))
$('.countries').attr('checked','checked');
else
$('.countries').removeAttr('checked');
});
$('.countries').click(function(){
var allChecked = true;
$('.countries').each(function(index, element){
if(!$(element).attr('checked'))
allChecked = false;
});
if(!allChecked)
$("#selectAll").removeAttr('checked');
else
$("#selectAll").attr('checked','checked');
});
});
链接地址: http://www.djcxy.com/p/55999.html
上一篇: adding check all and uncheck all option using value inside checkbox