Javascript 当我取消选中另一个复选框时自动重新选中一个复选框

Javascript 当我取消选中另一个复选框时自动重新选中一个复选框,javascript,jquery,Javascript,Jquery,作为一名学生,我试图学习一些JQuery技巧。 这是我的HTML <div id="EngineGroup" class="OptionGroupStyle"> <div id="GS300"><input id="GS300Check" name="GS300Check" type="checkbox" disabled="disabled" checked="checked"/>V6 250ch</div> <div id

作为一名学生,我试图学习一些JQuery技巧。 这是我的HTML

<div id="EngineGroup" class="OptionGroupStyle">
    <div id="GS300"><input id="GS300Check" name="GS300Check" type="checkbox" disabled="disabled" checked="checked"/>V6 250ch</div>
    <div id="GS300Price">53.000 €</div>
    <div id="GS430"><input id="GS430Check" name="GS430Check" type="checkbox"/>V8 283ch</div>
    <div id="GS430Price">58.000 €</div>
    <div id="GS450H"><input id="GS450HCheck" name="GS450HCheck" type="checkbox"/>V8 Hybride 345ch</div>
    <div id="GS450HPrice">63.000 €</div>
</div>
GS450H也是如此

但是,当我取消选中/取消选中GS430或GS450H(当它们已经被选中)时,如何在默认情况下自动重新检查GS300? 我在JQuery中找不到像ondeCheck/ondeSelect这样的东西,我是错过了什么,还是我真的是一个不懂简单东西的傻瓜

编辑:

$("#EngineGroup input").click(function() {
    if (!$("#EngineGroup input:checked").length) {
        $("#EngineGroup input:first").attr("checked", true);
    }
});

非常好:)

如果您无法更改HTML,那么我建议您只需在单击时保存复选框的当前状态,然后取消选中所有复选框,并将已单击复选框的状态翻转到与以前状态相反的状态,可能会更容易。如果在此之后仍然没有选中任何复选框,则只需选中默认复选框即可。通过这种方式,您可以在单个处理程序中完成所有操作,而不是在每个复选框中都有一个处理程序。

您应该在jQuery中使用该方法查看是否选中了某些内容:

if ($('#GS430Check').is(':checked')) {
  // do stuff...
}
忘记jQuery的
attr()
is()
来获取和设置复选框的检查性。对于这项任务来说,它们过于复杂,效率低下。相反,使用checkbox元素更简单的boolean
checked
属性:

if ( $('#GS430Check')[0].checked ) {
    $('#GS300Check')[0].checked = true;
}

这是一些奇怪的功能。不知怎的,单选按钮听起来更合适。无论如何,您应该在所有3个复选框中添加
单击
更改
事件处理程序,并在其中检查是否所有3个复选框都未选中,然后重新检查默认复选框。是的,我同意Mark。顺便说一句,它应该是“取消选中”而不是“取消选中”:)是的,我同意你关于单选按钮的看法(但你知道..老师..),我不能更改HTML代码。所以现在我尝试这样做,但我不起作用(我甚至可以选中复选框):$('#EngineGroup input[type=checkbox]')。更改(function(){if($($)input[name=GS430Check])。attr(“选中,false)和&$(输入[name=GS450HCheck]).attr(“选中”,false)和&$(输入[name=GS460Check]).attr(“选中”,false)){$(输入[name=GS300Check])).attr(“选中”,true);});我错过了什么吗/
if ( $('#GS430Check')[0].checked ) {
    $('#GS300Check')[0].checked = true;
}