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