此代码,
$("#x").removeAttr("checked").removeAttr("unchecked").attr("foo","bar");
此html输入中的结果:
<input type="checkbox" id="x" foo="bar">
但是这个:
$("#x").removeAttr("checked").removeAttr("unchecked").attr("checked","true");
结果如下:
<input type="checkbox" id="x" checked="checked">
发生了什么事?尽管使用了checked =“checked”属性,该复选框仍然未经检查。
切换HTML输入的checked属性的最佳方法是什么?
答案 0 :(得分:5)
要切换选中的使用.prop()
而不是.attr()
:
$('#x').prop('checked',true);
$('#x').prop('checked',false);
如果您想要另一个按钮来切换复选框,您可以使用:
var $x = $('#x'); // don't query every click - Credit: Roko :)
$('.button').click(function(){
$x.prop('checked', !$x.is(':checked'));
})
答案 1 :(得分:1)
checked="true"
是不正确的HTML,因此JQuery隐式将其转换为checked="checked"
。另一个答案提供了更好的解决方案,因为在这种情况下不必使用removeAttr
。
答案 2 :(得分:0)
$('#x')[0].checked = true; // true / false
http://jsbin.com/ivufen/1/edit
var $cbx = $('#x')[0];
$('#toggle').click(function(){
$cbx.checked = !$cbx.checked;
});