2012-06-02 12 views
12

Tengo una página de shell de Jquery Mobile, que estoy cargando un formulario en el uso de Ajax. El formulario tiene algunas casillas de verificación, a las que debo vincular.¿Cómo se usa Jquery document.on() en los elementos que se extraen a través de Ajax?

Curiosamente, puedo conseguir que funcione la configuración del oyente directamente sobre el botón de esta manera:

$('input[name="ohneiln"]').on('change', function() { 
    alert("hello"); 
    }); 

Pero cuando estoy tratando de establecer que el oyente $(document) y delegar en el checkbox, el oyente no incendios:

$(document).on('change', 'input[name="ohneiln"]', function() { 
    alert("hello"); 
}); 

pregunta:
¿Cuál es la forma correcta de establecer un evento de unión para elementos "dinámicos" ser lo Aded en via Ajax usando $(document).on()? ¿Esto no es posible para los eventos change o por qué estoy teniendo problemas?

¡Gracias por la ayuda!

+1

Su segunda sintaxis parece estar bien y debería funcionar para los elementos dinámicos, el problema está en otra parte tal vez. –

+1

funciona bien http://jsfiddle.net/7rDDA/ – Esailija

+0

@Esailija - pero su entrada está allí cuando se carga la página. La mía no lo es, está siendo atraída a través de Ajax después de que el usuario hace algunas cosas – frequent

Respuesta

11

La forma en que funciona el método .on() cambia según cómo la utilice. En su primer ejemplo, el método .on() se comporta de manera similar al bind y solo funcionará en elementos que ya existan.

El segundo ejemplo se comporta como .live() o delegate() de muchas maneras. Y funcionará para los elementos que se agreguen más adelante.

Leer la documentación para una explicación detallada http://api.jquery.com/on/

+0

Gracias por el enlace y la explicación. Supongo que me quedaré con la primera versión entonces. – frequent

+0

Creo que tienes el primer y segundo ejemplo mezclado. El primero es "directo", el segundo es "delegado". –

+0

Creo que tu derecho gracias cohete :) – codaniel

Cuestiones relacionadas