我一直在尝试弄清楚如何将属性“检查”添加到单击的复选框中。我要这样做的原因是,如果我查看复选框;我可以让我的本地存储保存为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');
}
});
有帮助吗?

解决方案

看来这是使用属性实际上合适的罕见情况之一。 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)的检查属性的值。要设置它,您需要第二个参数。基于 <input type="checkbox" checked="checked" />

编辑:

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

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

和一种直接的JavaScript方法,更合适,更有效:

this.checked = true;

谢谢 @安迪E。 为了那个原因。

如果 .attr() 不适合您(尤其是在检查和取消选中框时),请使用 .prop() 代替 .attr().

使用此代码

var sid = $(this);
sid.attr('checked','checked');
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top