在单击jquery上添加属性’checked’

我一直试图弄清楚如何将“已检查”属性添加到单击复选框。 我想要这样做的原因是,如果我勾选一个复选框; 我可以将我的本地存储保存为html,因此当页面刷新时会通知复选框已选中。 截至目前,如果我将其关闭,它会淡化父级,但如果我保存并重新加载它会保持淡化,但取消选中该复选框。

我尝试过$(this).attr(’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'); } }); 

这似乎是少数几个使用属性实际上合适的场合之一。 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; 

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

只是attr( 'checked' )将返回$(this)的checked属性的值。 要设置它,您需要第二个参数。 基于

编辑:

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

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

而直接的javascript方法,更合适,更有效:

 this.checked = true; 

谢谢@Andy E。

如果.attr()不适合您(特别是在连续检查和取消选中框时),请使用.prop()而不是.attr()

使用此代码

 var sid = $(this); sid.attr('checked','checked');