2013-08-05 7 views
0

當我選擇一個現有的單選按鈕時,我需要選擇具有類似unique_id的單選按鈕。 下面是代碼:如何選擇類似的收音機unique_id

$('.test li input:radio').change(function() { 

    var unique_id = $(this).attr('unique_id'); 
    $('input:radio').each(function() { 

     if ($(this).attr('unique_id') == unique_id) { 
      $(this).attr('checked', true); 
     } else { 
      $(this).attr('checked', false); 
     } 

    }); 
}); 

Fiddle

谷歌瀏覽器它是工作,但並非總是如此。它可能工作,可能無法工作。嘗試多次選擇無線電。在Mozilla中它根本不起作用。 我該怎麼辦? ( '試驗裏輸入[類型= 「無線電」]')。

回答

0
$('.test li input:radio').change(function(){ 
    $('input[unique_id="'+$(this).attr('unique_id')+'"]').prop('checked', true); 
}); 

Fiddle

瀏覽器會自動取消檢查無線電輸入時,與同name財產另一電臺被選中,所以只要你的所有的無線電組具有相同的unique_id項目,你不必做手動。此外,change事件僅在檢查時觸發無線電輸入,因此您只需檢查所有具有相同unique_id屬性的收音機,以便在保持組同步時進行更改。


至於爲什麼你的原代碼不能在Firefox的工作,你應該使用.prop()設置checked屬性。 Avoid using .attr() to set DOM element properties。現在使用.prop()查看您的原始fiddle。我找不到任何邏輯錯誤除此之外,雖然它可以進一步簡化香草JS設置checked屬性:

$('.test li input:radio').change(function(){ 
    var unique_id = $(this).attr('unique_id'); 
    $('input:radio').each(function(){ 
     this.checked = $(this).attr('unique_id') == unique_id; 
    }); 
}); 

Fiddle


這個問題已經得到答覆的CodersClan

0

$變更(功能(EVT){

var other_el= $('.test li input[type="radio"][unique_id="' + $(evt.target).attr('unique_id') + '"]').not($(evt.target)); 


if (other_el.length === 1){ 
    other_el.attr('checked', $(evt.target).has(':checked')); 
} 

});

這裏是一個鏈接:http://jsfiddle.net/Sj4Ah/1/

享受!

+0

感謝您的回答,但這裏的問題和我的代碼一樣。嘗試多次選擇單選按鈕。在Mozilla有時它正在工作,有時不是。 –