2009-07-28 20 views
1

讓我們看看兩個 - 選項 - 無線電組A和B。我試圖通過jQuery保證,如果在A中選擇了某個選項,那麼它是等效的選項是在B中選擇,反之亦然。使用jQuery同步'radiogroups'

我目前的做法是這樣的一個:

$(document).ready(function() { 
    $(".groupA > input").click(function() { 
     $(".tutored-radio > input ").click(); 
    }); 

    $(".groupB > input").click(function() { 
     $(".online-radio > input").click(); 
    }); 
}); 

注:每個單選按鈕是一個跨度內。我沒有將類直接分配給輸入,因爲在asp.net運行時生成的ListItem中很難做到這一點。

明顯的問題在於它是一個無限循環:它點擊的元素,並觸發點擊動作,這是再次點擊它,等等...

你有什麼建議這個?我確實有一些想法,但我沒有提到他們,因爲我覺得他們太「黑客」,但如果證明有必要,他們會談論他們。

在此先感謝!

+0

當你說相當的,你是什麼意思?組中的等同位置/索引?等價值? – 2009-07-28 21:33:01

+0

我很想知道你的'hacky'建議是什麼 – 2009-07-28 22:07:13

+0

他們將操縱點擊事件使其不觸發事件處理程序(不知道它是否可能 - 可能不是)或只做模擬點擊if該單選按鈕不是已經選定的(不是特別「哈克」,但事實證明有一個更簡單的解決方案) – 2009-07-29 05:32:41

回答

3

而不是點擊嘗試設置arrtibute標籤。

$(document).ready(function() { 
    $(".groupA > input").click(function() { 
     $(".tutored-radio > input ").attr(」checked」, 「checked」); 
    }); 

    $(".groupB > input").click(function() { 
     $(".online-radio > input").attr(」checked」, 「checked」); 
    }); 
}); 
1

當你說等價選項時,你是什麼意思?我假設你的意思是value

像下面將工作

$(function() { 

    $('span:has(input:radio)').click(function() {    
     var $this = $(this); 
     var val = $('input:radio', $this).attr('checked','checked').val(); 
     var group = $this.hasClass('groupA') ? '.groupB' : '.groupA';  
     $(group + '> input:radio[value="' + val + '"]').attr('checked','checked');    
    }); 

}); 

這裏有一個Working Demo