2011-04-07 8 views
10

Me gustaría preguntar si hay una forma de obtener dinámicamente un nombre de grupo de botones de opción, es decir, optimizar las siguientes 2 funciones de un clic en uno teniendo [name=some_variable].Obtener dinámicamente el nombre del grupo de botones de radio usando jQuery

me trataron:

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

pero siempre me devuelve el nombre del primer grupo de botones de radio que se conecta.

$(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> 

Respuesta

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

Ha elegido nuevo conjunto de elementos de clic, pero se necesita el attr del elemento actual tanto, es necesario hacer referencia a ella con 'esto'

+0

¡Muchísimas gracias! Descubrió que usar this.name también funciona. ¡Gracias! – gisc

2

Algo parecido lo siguiente debería funcionar:

$('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

Si alguien pudiera formatear el código para mí, sería increíble; iPhone parece estar de mal humor ... =/ –

+0

Gracias David. Lamentablemente, el formato del código apareció solo en modo de vista previa. – gisc

+0

Solucionado, no tengo idea de por qué no funcionó antes, pero eliminé todos los espacios en blanco y los reinserte. –

Cuestiones relacionadas