2011-04-07 47 views
10

我想問一下,是否有辦法動態獲取單選按鈕組名稱,即通過讓[name=some_variable]將以下2個單擊函數優化爲一個。使用jQuery動態獲取單選按鈕組名稱

我想:

$('input:radio').click(function() { 
    alert($('input:radio:checked').attr('name')); 
}); 

但它總是返回我的第一個單選按鈕組的名稱點擊。

$(document).ready(function(){ 
    $('input:radio[name=q1]').click(function() { 
     var ans1 = $('input[name=q1]:radio:checked').val(); 
     getUserAnswer(1, ans1); 
    }); 

    $('input:radio[name=q2]').click(function() { 
     var ans2 = $('input[name=q2]:radio:checked').val();     
     getUserAnswer(2, ans2); 
    });        
}); 
<body> 
    <ol> 
     <li><p>Q1<br /> 
      <input type="radio" id="q1A" name="q1" value="A" />Q1 A<br /> 
      <input type="radio" id="q1B" name="q1" value="B" />Q1 B<br /> 
      <input type="radio" id="q1C" name="q1" value="C" />Q1 C<br /> 
      <input type="radio" id="q1D" name="q1" value="D" />Q1 D<br /> 
     </p></li> 
     <li><p>Q2<br /> 
      <input type="radio" id="q2A" name="q2" value="A" />Q2 A<br /> 
      <input type="radio" id="q2B" name="q2" value="B" />Q2 B<br /> 
      <input type="radio" id="q2C" name="q2" value="C" />Q2 C<br /> 
      <input type="radio" id="q2D" name="q2" value="D" />Q2 D<br />   
     </p></li> 
    </ol> 
</body> 

回答

21
$('input:radio').click(function() { 
    console.log($(this).attr('name')); 
}); 

您正在選擇新的設定上點擊的元素,但你需要當前元素的ATTR所以,你需要提到它與「這種」

+0

非常感謝!發現使用this.name也有訣竅。謝謝! – gisc 2011-04-07 07:29:16

2

喜歡的東西以下應該工作:

$('input').click(function() { 
    var thisName = $(this).attr('name'); 
    var qNum = thisName.substring(1); 
    var ans2 = $('input[name=' + thisName + ']:radio:checked').val(); 
    getUserAnswer(thisName, ans2); 
}); 
+0

如果有人可以爲我設置代碼格式,那就太棒了; iPhone似乎處於一種尷尬的狀態...... =/ – 2011-04-07 07:18:28

+0

謝謝大衛。不幸的是,代碼格式只出現在預覽模式。 – gisc 2011-04-07 07:49:28

+0

修正了它,我不知道爲什麼它以前沒有工作,但我只是刪除所有空格並重新插入它們。 – 2011-04-07 07:54:35