2011-04-29 19 views
5

Estoy seguro de que me falta algo muy obvio, ya que soy nuevo en Jquery. Estoy usando jQuery Mobile con el siguiente marcado:Jquery Mobile - Cambio de grupo de radio

<div> 
    <input data-theme="c" type="radio" name="radio-choice-1" id="radio-choice-1" value="choice-1" /> 
    <label for="radio-choice-1">Option 1</label> 
</div> 
<div> 
    <input data-theme="c" type="radio" name="radio-choice-1" id="radio-choice-2" value="choice-2" /> 
    <label for="radio-choice-2">Option 2</label> 
</div> 
<div> 
    <input data-theme="c" type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3" /> 
    <label for="radio-choice-3">Option 3</label> 
</div> 

y yo estoy tratando de realizar una acción cuando cambia el valor.

por lo que tengo:

$(":input[@name='radio-choice-1']").change(function() { 
     alert('clicked'); 
}); 

Ahora la primera vez que seleccione una opción, el evento no se dispara. Se dispara cuando posteriormente lo cambio (es decir, la 2ª, 3ª, etc. veces) pero no el primero. Supongo que es porque no está 'cambiado' per se, solo le da un valor. Traté de cambiarlo para hacer clic, pero luego nunca se dispara.

¿Qué me falta aquí? Cualquier ayuda muy apreciada.

+0

¿Puede usted acaba de pre-seleccionar una de las opciones? – jvenema

+0

Obviamente pude, y eso funcionaría, pero no es eso lo que pretendo. –

+0

¿Estás recibiendo algún error? si abre su página móvil en un navegador web? – mcgrailm

Respuesta

4

creo que esto ayudará

$(document).ready(function() { 

$(":input[@name='radio-choice-1']").live('change mousedown',function(event) { 
     alert('clicked'); 
}); 

}); 

Ejemplo de trabajo aquí http://jsfiddle.net/XVuAs/1/

+0

Gracias por la respuesta. Intenté eso y recibí lo mismo (es decir, el primer cambio no obtuvo respuesta, todos los posteriores lo hicieron) ¿Qué navegador usabas? Estoy en Safari 5.0.2. –

+0

@Nick Hartley he agregado el código jsfiddle .. ¿Puedes verificar que –

+0

Sí que funciona bien. Por lo tanto, debe ser un problema móvil jquery. Tenga paciencia conmigo tendré una versión en línea. –

1
$('input[type="radio"]').change(function() { 
     alert('clicked'); 
}); 

Por encima de código, probado y funciona bien para mí ...

+0

Gracias por la respuesta. No está sucediendo para mí. Intenté Firefox y Safari, y tengo el mismo problema. El primer clic no activa el evento, los clics posteriores lo hacen. –

+0

funciona para mí.gracias – Jimmy

13

Ejemplo vivo: http://jsfiddle.net/wWFGf/2/

Sintaxis HTML alternativo: http://jsfiddle.net/wWFGf/3/

$("[name=radio-choice-1]").change(function() { 
    alert('Selected: '+$('input[name=radio-choice-1]:checked').val()); 
}); 
+0

Gracias. Estaba haciendo referencia a la versión alpha 3, que probablemente fue la fuente de todos mis problemas. Está trabajando ahora. –

+0

np. Como consejo, usted querrá mantener su código base lo más pequeño posible, ya que los tiempos de carga en un dispositivo móvil serán más lentos así como también los recursos de la memoria. También se agregó la sintaxis alternativa –

+0

Nick, gracias por mencionar alpha 3. Dreamweaver CS5.5 usa alpha 3, así que fui al sitio móvil de jQuery y encontré el último lanzamiento de cdn. Eso lo solucionó, como dijiste. –

0

Si se carga dinámicamente la página puede que tenga que hacer algo como esto:

$('input[type="radio"]').live('changed' function() { 
alert('clicked live'); 
}); 
Cuestiones relacionadas