2012-05-31 63 views
1

使用jQuery,我隱藏所有複選框和單選按鈕,並使用CSS background來指示已簽名狀態。我想取消所有的複選框與單選按鈕,但仍然檢查了我的複選框雖然CSS改變我的實現將無法工作:帶單選按鈕的Jquery unchecked複選框

var fliter_radio=$(".item input[name='group1_radio']"); 
var fliter_checkbox=$(".item input[name='group1']"); 

fliter_radio.next().click(function(){ 
          $(this).prev()[0].checked=true; 
          $(this).addClass("checked"); 

          //#unchecked all checkbox 
          fliter_checkbox.each(function(){ 
           $(this).checked=false; 
           $(this).next().removeClass("checked"); 
          }) 
    }) 

<li class="item"><input type="radio" id="radio" name="group1_radio" checked="checked" value="unchecked" /><strong>radio button</strong></li> 
<li class="item"><input type="checkbox" id="CheckBox1" name="group1" value="news" /><strong>Checkbox1</strong></li> 
<li class="item"><input type="checkbox" id="CheckBox2" name="group1" value="news" /><strong>Checkbox2</strong></li> 

我重寫一個完整的演示在這裏:http://jsfiddle.net/badjohnny/MnujS/8/

你能幫我正確實施嗎?

+0

哪裏是你的HTML標記?請發帖 – thecodeparadox

回答

1
$(document).ready(function() { 
    function custom_uncheck(radio, checkbox) { 
     var fliter_checkbox = $(checkbox); 
     var fliter_radio = $(radio); 

     fliter_checkbox.hide(); 
     fliter_radio.hide(); 

     fliter_radio.next().on('click', function() { 

      $(this).addClass('checked') // add checked class to strong 
        .prev().prop('checked', true); // make check the radio 

      fliter_checkbox.prop('checked', false) // make checkbox uncheck 
        .next('strong').removeClass('checked'); // remove checked class 

     }).click(); // trigger the initial click 

     fliter_checkbox.next('strong').on('click', function() {// click on checkbox 
      $(this).toggleClass('checked') // changing checked class 
        .prev() // go to checkbox 
        .prop('checked', function() { // change checkbox check status 
           return !this.checked; 
          }); 
      // make uncheck the radio and remove checked class from strong 
      fliter_radio.prop('checked', false).next().removeClass('checked'); 
     }); 
    } 
    custom_uncheck('input[name="all"]', 'input[name="c"]'); 
})​; 

Working sample

+0

它似乎使用Change()方法沒有改變 – BadJohnny

+0

@BadJohnny檢查演示 – thecodeparadox

+0

+1演示。 – ahren

3

$(this).checked=false;$(this).prop("checked",false);

+0

是不是應該是'$(this).attr(「checked」,false)'? – anu

+0

@anu'prop'是[自1.6開始推薦的方式](http://api.jquery.com/prop/) – okm

+0

您可以使用'attr()'或'prop()'。但'prop()'更好。閱讀更多:http://forum.jquery.com/topic/please-explain-attr-vs-prop-change-in-1-6 – ahren