2012-11-29 41 views
1

有兩個獨立的div:check_one & check_two。 check_one有4個盒子,check_two有1個。jQuery從單獨的特定複選框取消選中某個div內的複選框

如果您選中check_two div中的複選框,它應該取消選中第一個div check_one內的所有chekced框。這有點令人困惑,但這正是我想要做的。

HTML ::

<div id="check_one"> 
    <label>Stuff 1</label> <input name="" type="checkbox" value="" id="group1" checked="checked"><br> 
    <label>Stuff 2</label> <input name="" type="checkbox" value="" id="group1" checked="checked"><br> 
    <label>Stuff 3</label> <input name="" type="checkbox" value="" id="group1" checked="checked"><br> 
    <label>Stuff 4</label> <input name="" type="checkbox" value="" id="group1" checked="checked"> 
</div> 
<br> 
<div id="check_two"> 
    <label>Undo</label> <input name="uncheckMe" type="checkbox" value="" id="group2"> 
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

的jQuery ::

$('input[name=uncheckMe]').change(
{ 
    var checked = $("#group1").attr("checked"); 

    if(checked) 
    { 
     $("#check_two").attr("disabled", true); 
    } 

});​ 
+0

下一次,關閉您的
id是整個html頁面的唯一標識,所以你的「組1」的ID違反了這一規則。 – JofryHS

+0

此外,你必須在你的attr選擇器後面加上引號:$('input [name =「uncheckMe」]')。change() – JofryHS

+0

@JofryHS:
不建議用於HTML。
很好。見http://stackoverflow.com/a/1946452/462117 – nandhp

回答

0

我創建了一個的jsfiddle此http://jsfiddle.net/Twisty/ta2qT/

你錯過了變化(在一個函數):

$('input[name=uncheckMe]').change(function(){ 
     $("#check_one > input").each(function(i) { 
      if ($(this).is(":checked")) { 
       $(this).removeAttr("checked"); 
      } 
     }); 
    }); 
+0

那釘了它。非常感謝你! – Rav

+0

很高興幫助!別客氣。 – Twisty

0

試試這個:

$("input[name='uncheckMe']").change(function(){ 
    if ($(this).is(":checked")){  
     $("#check_one input").removeAttr("checked"); 
    } 
}); 

而且一個的jsfiddle:http://jsfiddle.net/PgHbu/3/

相關問題