【问题标题】:Cloned checkbox "checked" property undefined克隆复选框“选中”属性未定义
【发布时间】:2014-07-27 23:19:57
【问题描述】:

我为一周中的每一天设置了一系列复选框,并带有一个“全部”复选框来选中/取消选中所有日期。我的用例需要多组这些复选框,当我动态创建它们时,我使用jQuery.clone() 函数复制该组并将它们添加到新行;但是克隆的复选框无法正常工作。 OnClick 事件触发;但无论出于何种原因,我都无法访问 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/

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

【问题讨论】:

  • 将所有相关代码直接放在问题中,而不是让您的问题依赖于其他网站。这里没有足够的信息来给出答案。

标签: javascript jquery google-chrome checkbox


【解决方案1】:

在这部分代码中:

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

您在克隆后删除属性“已检查”。所以毫不奇怪它是未定义的。 换个方式

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

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

【讨论】:

  • 通常,只要我以这种方式删除它,它就会被添加回来;但是您的解决方案完美无缺。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 2012-04-08
  • 2011-10-13
  • 2020-04-27
  • 2022-01-07
相关资源
最近更新 更多