当我将check设置为false时,为什么选中了新创建的复选框?

时间:2017-12-13 17:56:15

标签: javascript jquery checkbox

当我将此代码放入我的控制台时,我最终在我的网页中显示了一个复选框:

$('body').append($('<input/>', {
    type: 'checkbox',
    value: "foo",
    checked: false
}));

当我完全删除选中的attr时,不会选中该框:

$('body').append($('<input/>', {
    type: 'checkbox',
    value: "foo",                                                                  
}));

...但我需要生成一组动态复选框,有些是已选中,有些则没有。什么attr / value创建正确的&#34;未选中&#34;状态?

更新:

我正在使用最新的Chrome。 jQuery版本3.2.1 代码在这个小提琴中按预期工作:https://jsfiddle.net/mmvunhL0/ 但不是在我的网站上......我想知道是否存在全局设置或触及复选框行为的内容。

3 个答案:

答案 0 :(得分:3)

与复选框一起使用时,属性checked是布尔属性。

如果它一直存在那么它就是真的。

<input type="checkbox" checked />

相同
<input type="checkbox" checked="false" />

<input type="checkbox" checked="checked" />

没有检查它的唯一方法是没有checked属性。

答案 1 :(得分:3)

您可以使用.prop或.attr作为复选框

&#13;
&#13;
<div id="body">

</div>

<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script>   
var value = true;

$('#body').append($('<input/>', {
                                    type: 'checkbox',
                                    value: "foo",
                                }).prop('checked', value) ) ;
                                
value = false;                                
$('#body').append($('<input/>', {
                                    type: 'checkbox',
                                    value: "foo",
                                }).prop('checked', value) );   
                                
</script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您的两个代码都未经检查。因为,默认情况下,取消选中该复选框,如果要显式检查它,则将checked设置为true。

$('body').append($('<input/>', {
    type: 'checkbox',
    value: "foo",
    checked: true
}));

如果您想随机使用,那么您可以使用Math:

$('body').append($('<input/>', {
    type: 'checkbox',
    value: "foo",
    checked: Boolean(Math.round(Math.random()))
}));

此处需要布尔值。这是因为属性值严格依赖虚假值而不是真值或虚假价值。