Javascript 使用jquery预设html勾选框

Javascript 使用jquery预设html勾选框,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,这个代码 $("#x").removeAttr("checked").removeAttr("unchecked").attr("foo","bar"); 此html输入的结果: <input type="checkbox" id="x" foo="bar"> 结果如下: <input type="checkbox" id="x" checked="checked"> 发生了什么事?尽管有这个checked=“checked”属性,复选框仍然顽固地未选中 切换H

这个代码

$("#x").removeAttr("checked").removeAttr("unchecked").attr("foo","bar");
此html输入的结果:

<input type="checkbox" id="x" foo="bar">
结果如下:

<input type="checkbox" id="x" checked="checked">

发生了什么事?尽管有这个checked=“checked”属性,复选框仍然顽固地未选中


切换HTML输入的选中属性的最佳方法是什么?

要切换选中属性,请使用
.prop()
而不是
.attr()

如果需要另一个按钮切换复选框,可以使用:

var $x  = $('#x'); // don't query every click - Credit: Roko :) 
$('.button').click(function(){      
    $x.prop('checked', !$x.is(':checked'));
})

要切换选中状态,请使用
.prop()
而不是
.attr()

如果需要另一个按钮切换复选框,可以使用:

var $x  = $('#x'); // don't query every click - Credit: Roko :) 
$('.button').click(function(){      
    $x.prop('checked', !$x.is(':checked'));
})
checked=“true”
是不正确的HTML,因此JQuery隐式地将其转换为
checked=“checked”
。另一个答案提供了更好的解决方案,因为在这种情况下不需要使用
removeAttr

checked=“true”
是不正确的HTML,因此JQuery隐式地将其转换为
checked=“checked”
。另一个答案提供了更好的解决方案,因为在这种情况下不需要使用
removeAttr

$('#x')[0].checked = true; // true / false

切换:

切换:
$('.button')。单击(function(){var$x=$('#x');//不要查询两次!
“不要查询两次”…但也不要每次单击都进行查询。@RokoC.Buljan我已经更新并为您评分:),我相信真正的网站#x会更动态..每个复选框或类似的按钮..但您显然是对的。
$('按钮')。单击(function(){var$x=$('\35; x');//不要查询两次!
“不要查询两次”…但也不要每次单击@RokoC.Buljan我更新并给予您学分:),我相信在一个真正的网站上,#x将更具动态性。每个复选框或类似的按钮。但你显然是对的。
$('#x')[0].checked = true; // true / false
var $cbx = $('#x')[0];

$('#toggle').click(function(){
  $cbx.checked = !$cbx.checked;
});