在下面的代码中有复选框,每次选中复选框时,都会添加该复选框值(有效)。但是当它取消选中时,它应该删除该复选框值。但相反,它只是添加两次值。如何添加和删除未选中的值?
以下是代码示例
//Looks for every checkbox
$('#index '+ selected +' #cbFieldSet .icheck').each( function(i, name){
console.log("#"+ $(name).attr("id"));
if($('input[name='+$(name).attr('name')+']').attr('checked', false)){
//checks what checkbox has been check. Gets that checkbox id
$('#index '+ selected +' #cbFieldSet #'+ $(name).attr("id")).click( function(){
// $("#cb-"+playerStart).click(function(){
//console.log(i);
console.log('yes');
//add to popup box paragragh
$('#popupDialog #info').append($(name).val());
});
}else if($('input[name='+$(name).attr('name')+']').attr('checked', true)){
//checks what checkbox has been check. Gets that checkbox id
$('#index '+ selected +' #cbFieldSet #'+ $(name).attr("id")).change( function(){
// $("#cb-"+playerStart).click(function(){
//console.log(i);
console.log('yes');
//add to popup box paragragh
$('#popupDialog #info').remove( ":contains("+ $(name).val() +")" );
});
}
});
答案 0 :(得分:0)
根据使用的jquery版本,您可能需要.prop()而不是.attr()。 只有1.6之前的版本具有attr(" checked",true / false),即为布尔值。 .prop("已检查")应该做的伎俩
答案 1 :(得分:0)
此代码不易阅读,部分原因是您在"已检查"中都复制了相同的注释。和"未经检查"案例。你还遗漏了一些背景 - 缩进是关闭的,我不知道selected
是什么。
无论如何 - 除了上面说的user3785863之外,当你想读设置属性值的形式.attr() >现有价值。
换句话说,$('input(...)').attr('checked', false)
不会测试复选框是否已选中;它将其值设置为布尔值false
,然后返回复选框本身,这意味着您的第一个if
语句将始终运行,而第二个语句将永远不会运行。
所以,我认为你的意思是if ($(...).attr("checked") == "false")
。
(我认为你也有错误的方法,加上其他一些问题,但这可能会让你失败......)