2010-01-12 205 views
1

作为一名学生,我试图学习一些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> 

GS300是默认选项。

  • 当 “GS430Check” 被选中 - > GS300和GS450H未被选中
  • 当 “GS450HCheck” 被选中 - > GS300和GS430是选中

这是确定的,与

$("#GS430Check").click(function() { 
     $("input[name=GS300Check]").attr("checked",false); 
     $("input[name=GS450HCheck]").attr("checked",false); 
}); 

相同的GS450H

但我怎么能自动重新检查GS300的defa当我检查/取消选择GS430或GS450H时,是否可以取消选择? 我在jQuery中找不到像ondeCheck/ondeSelect这样的东西,我错过了什么,或者我是一个真正的noob,他无法理解一些非常简单的东西?

编辑:

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

是伟大的工作:)

+6

这是一些奇怪的功能。不知怎的,单选按钮听起来更合适。无论如何,您应该为所有3个复选框添加一个'click'或'onchange'事件处理程序,并在其中检查是否所有3个复选框都未选中,然后重新检查默认值。 – mpen 2010-01-12 02:10:13

+0

是的,我同意马克。顺便说一句,它应该是“取消”而不是“decheck”:) – 2010-01-12 02:12:10

+0

是的,我同意你关于单选按钮(但你知道..老师..),我不能改变HTML代码。 所以现在我是尝试类似的东西,但我不工作(我甚至可以检查复选框): $('#EngineGroup input [type = checkbox]')。change(function(){ if($(“input [name (“check”,false)&& $(“input [name = GS450HCheck]”)。attr(“checked”,false)&& $(“input [name = GS460Check]”)。attr “选中”,FALSE)){ $( “输入[名称= GS300Check]”)ATTR( “选中”,真正的); 。} }); 我错过了什么?/ – Max 2010-01-12 02:21:16

回答

1

如果你不能改变的HTML,那么我认为它可能更容易只需保存复选框的当前状态点击一下,然后取消选中所有框,并将单击复选框的状态翻转到与之前状态相反的状态。如果在此之后仍未检查,则应该只检查默认复选框。这样你可以在一个处理程序中完成所有操作,而不是每个复选框都有一个处理程序。

1

你应该看看使用jQuery中的is()方法来看看是否有被检查:

if ($('#GS430Check').is(':checked')) { 
    // do stuff... 
} 
0

忘记jQuery的attr()is()获取和设置复选框的checkedness。这些任务极其复杂且效率低下。相反,使用复选框元素的简单布尔型checked属性:

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

感谢您的意见:) – Max 2010-01-12 12:35:42

相关问题