克隆复选框"已选中"属性未定义

时间:2014-06-06 15:55:42

标签: javascript jquery google-chrome checkbox

我有一系列的复选框,每周都有一个" All"复选框以选中/取消选中所有日期。我的用例需要多组这些复选框,并且当我动态创建它们时,我使用jQuery.clone()函数复制集合并将它们添加到新行;但是克隆的复选框无法正常工作。 OnClick事件触发;但无论出于何种原因,我都无法访问“已检查过的”#39; Chrome中任何克隆复选框的属性。我尝试了以下方法(使用All复选框作为示例):

$('input[name="all"]:last').prop('checked')
$('input[name="all"]:last')[0].checked
$('input[name="all"]:last').attr('checked')

所有返回未定义。我发现实际上返回与检查状态有关的任何方法的唯一方法是:

$('input[name="all"]:last').is(':checked')

我在这里复制了错误:http://jsfiddle.net/YfY5U/

真的希望有人知道发生了什么,因为我完全陷入困境:(

1 个答案:

答案 0 :(得分:2)

在这部分代码中:

var new_content = $('.initial').clone()
        .removeClass('initial')
        .find(':checkbox').each(function(){
            $(this).removeProp('checked');
        }).end().appendTo('fieldset');

删除属性"已检查"克隆后。所以毫不奇怪它是未定义的。 只需改变

$(this).removeProp('checked'); 

$(this).prop('checked', false)