2010-12-16 15 views
25

Quiero manejar elementos html de manera diferente según su tipo.cómo verificar si el tipo de entrada es la radio usando jquery

Usando jquery, ¿cómo puedo verificar si un tipo de entrada es un botón de opción?

que he probado:

if ($('#myElement').is(':radio')) { 
    ....//code here 
} 

y

if ($('#myElement').is("input[type='radio']")) { 
    ....//code here 
} 

Ninguno de estos trabajado. ¿Algunas ideas?

EDIT:

if ($('#myElement').is(':radio')) { 
    ....//code here 
} 

obras, pero mis botones de radio no tienen el atributo id, que sólo tienen un atributo de nombre, por lo que no funcionó.

he cambiado de código para:

if ($('input[name=' + myElement + ']').is(":radio")) { 
    ....//code here 
} 
+1

si ha resuelto su problema, debería haberlo publicado como respuesta y haberlo elegido. – zzzzBov

Respuesta

40

que debería funcionar, siempre y cuando se cargan los elementos.

// Ensure the DOM is ready 
$(function() { 
    if ($('#myElement').is(':radio')) { 
     //code here 
    } 
}); 

Si va a asignar controladores basados ​​en el tipo, otro enfoque sería utilizar .filter().

$(function() { 
    var el = $('#myElement'); 
    el.filter(':radio').change(function() { 
     //code here 
    }); 

    el.filter(':checkbox').change(function() { 
     // other code here 
    }); 
}); 

Si no pasa la filter(), no se asignará al controlador.

1

que debería funcionar se puede tratar de usar filtro de esta manera en lugar

if ($('#myElement').filter(':radio').size() > 0) { 
    ....//code here 
} 
and 

if ($('#myElement').filter("input[type='radio']").size() > 0) { 
    ....//code here 
} 

O

$('#myElement:radio').each(function() { 
     ....//code here 
}); 

uDate: es que también están seguros de que el identificador es único en la página? Si desea seleccionar más como 1 elemento, puede usar una clase en su lugar.

1
if($('#my-element').attr('type') == 'radio') 
Cuestiones relacionadas