25

我一直在试图弄清楚如何在单击时将属性“选中”添加到复选框。我想这样做的原因是,如果我选中一个复选框;我可以让我的本地存储将其保存为 html,因此当页面刷新时,它会注意到复选框已选中。截至目前,如果我将其选中,它会使父级褪色,但如果我保存并重新加载它会保持褪色,但未选中复选框。

我试过做 $(this).attr('checked'); 但它似乎不想添加检查。

编辑:阅读评论后,我似乎并不清楚。我的默认输入标签是:

<input type="checkbox" class="done">

我需要它在顶部,所以当我单击复选框时,它会在其末尾添加“选中”。前任:

<input type="checkbox" class="done" checked>

我需要它来执行此操作,因此当我将 html 保存到本地存储时,当它加载时,它会将复选框呈现为选中状态。

$(".done").live("click", function(){
if($(this).parent().find('.editor').is(':visible') ) {
var editvar = $(this).parent().find('input[name="tester"]').val();
$(this).parent().find('.editor').fadeOut('slow');
$(this).parent().find('.content').text(editvar);
$(this).parent().find('.content').fadeIn('slow');
}
if ($(this).is(':checked')) {
$(this).parent().fadeTo('slow', 0.5);
$(this).attr('checked'); //This line
}else{

$(this).parent().fadeTo('slow', 1);
$(this).removeAttr('checked');
}
});
4

5 回答 5

39

$( this ).attr( 'checked', 'checked' )

justattr( 'checked' )将返回 $( this ) 的 checked 属性的值。要设置它,您需要第二个参数。基于<input type="checkbox" checked="checked" />

编辑:

根据评论,更合适的操作是:

$( this ).attr( 'checked', true )

和一个直接的javascript方法,更合适和高效:

this.checked = true;

感谢@Andy E。

于 2010-08-04T17:37:35.997 回答
28

似乎这是使用属性实际上合适的罕见情况之一。jQuery 的attr()方法对你没有帮助,因为在大多数情况下(包括这个)它实际上设置了一个属性,而不是一个属性,这使得选择它的名字看起来有些愚蠢。[更新:从 jQuery 1.6.1 开始,情况略有变化]

IE 的 DOM 方法存在一些问题,setAttribute但在这种情况下应该没问题:

this.setAttribute("checked", "checked");

在 IE 中,这实际上总是使复选框被选中。在其他浏览器中,如果用户已经选中和取消选中复选框,则设置该属性将没有可见效果。因此,如果要保证复选框被选中并且具有checked属性,则还需要设置checked属性:

this.setAttribute("checked", "checked");
this.checked = true;

要取消选中复选框并删除属性,请执行以下操作:

this.setAttribute("checked", ""); // For IE
this.removeAttribute("checked"); // For other browsers
this.checked = false;
于 2010-08-04T21:28:41.170 回答
10

如果.attr()对您不起作用(尤其是在连续选中和取消选中框时),请.prop()使用.attr().

于 2013-04-17T16:06:30.753 回答
2

一个简单的答案是在复选框中添加checked属性:

$('input[id='+$(this).attr("id")+']').attr("checked", "checked");

于 2020-06-21T19:37:40.343 回答
1

使用此代码

var sid = $(this);
sid.attr('checked','checked');
于 2014-01-29T07:33:08.297 回答