设置“检查”的复选框与jQuery?

我想要做这样的事情来使用jQuery勾选checkbox

$(".myCheckBox").checked(true);

要么

$(".myCheckBox").selected(true);

这样的事情存在吗?


jQuery 1.6+

使用新的.prop()方法:

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

jQuery 1.5.x及以下版本

.prop()方法不可用,所以您需要使用.attr()

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

请注意,这是jQuery在1.6版之前的单元测试中使用的方法,并且比使用更适合

$('.myCheckbox').removeAttr('checked');

因为后者会在初始检查盒子时改变对包含它的任何形式的.reset()调用的行为 - 这是一种微妙但可能不受欢迎的行为改变。

有关更多上下文,可以在版本1.6发行说明和.prop()属性与属性部分中找到对从1.5.x到1.6的转换中对已checked属性/属性进行处理更改的不完整讨论。文档。

任何版本的jQuery

如果您只使用一个元素,则始终可以修改HTMLInputElement.checked属性:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

使用.prop().attr()方法代替这一点的好处是,它们将对所有匹配的元素进行操作。


使用:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

如果你想检查复选框是否被选中:

$('.myCheckbox').is(':checked');

这是使用jQuery检查和取消选中复选框的正确方法,因为它是跨平台的标准,并且允许表单转发。

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

通过这样做,您正在使用JavaScript标准来检查和取消选中复选框,因此任何正确实现复选框元素的“checked”属性的浏览器都可以完美地运行此代码。 这应该是所有主流浏览器,但我无法测试Internet Explorer 9之前的版本。

问题 (jQuery 1.6):

一旦用户点击复选框,该复选框会停止响应“已检查”属性更改。

这是复选框属性在某人点击复选框后失败的示例(这发生在Chrome中)。

小提琴

解决方案:

通过在DOM元素上使用JavaScript的“checked”属性,我们可以直接解决问题,而不是试图操纵DOM去做我们想要的事情。

小提琴

这个插件会改变jQuery所选元素的checked属性,并在任何情况下成功地检查和取消选中复选框。 因此,虽然这可能看起来像一个过度承载的解决方案,但它会使您的网站的用户体验更好,并有助于防止用户感到沮丧。

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

或者,如果您不想使用插件,则可以使用以下代码片段:

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});
链接地址: http://www.djcxy.com/p/197.html

上一篇: Setting "checked" for a checkbox with jQuery?

下一篇: How to pair socks from a pile efficiently?