2017-08-18 56 views
0

我在檢查同一組中的另一個單選按鈕時無法刪除課程。現在,班級堅持下去,永遠不會消失。選擇不同的單選按鈕時刪除課程

$(function(){ 

$('input[name=radio]').change(function(){   
     if($(this).is(":checked")){ 
       $(this).closest('div').addClass("payBoxSelected"); 
      } else { 
       $(this).closest('div').removeClass("payBoxSelected"); 
      }            
    }); 

}); 

任何想法爲什麼這不工作?

+0

顯示你的HTML以及 –

+0

變化事件爲被選擇,而不是爲未檢查的要素的無線電火災。它會一直被檢查。 – Taplar

+0

以下答案的附註。如果你收集了所有的收音機,做$ allTheRadios.not(這個)會返回你可以從中刪除該類的所有未被選中的收音機。既然你知道它是選定的,你不必做你的if邏輯。側面說明,即使你正在做if'element.checked',所以你不必做$(element).is(':checked') – Taplar

回答

0

因爲你只改變(增加或減少)類的無線電這是檢查其他電臺沒有改變(因此似乎卡住)。如何首先從全部刪除班級,然後只添加所需的班級到選中的收音機?

試試這個:

$('input[name=radio]').change(function(){ 
    //first remove class from all 
    $('input[name=radio]').closest('div').removeClass("payBoxSelected");   

    //now add the class to checked radio 
    if($(this).is(":checked")){ 
     $(this).closest('div').addClass("payBoxSelected"); 
    }            
}); 
+0

太棒了!像魅力一樣工作。非常感謝! –

0

不知道這是一個最好的做法,但是這將工作:

var inputs$ = $('input[name=radio]'); 
inputs$.change(function() { 
    inputs$.each(function (index, el) { 
     if ($(el).is(":checked")) { 
      $(el).closest('div').addClass("payBoxSelected"); 
     } else { 
      $(el).closest('div').removeClass("payBoxSelected"); 
     } 
    }); 
}); 
0

試試這個:

$(document).ready(function() { 
    $('input[type=radio]').click(function() { 
     $('input[name='+$(this).attr('name')+']:not(:checked)').removeClass("payBoxSelected"); 
     $('input[name='+$(this).attr('name')+']:checked').addClass("payBoxSelected"); 
    });  
});​