2012-08-09 11 views
12

Tengo el siguiente en la cabecera:jQuery En <select> evento de cambio no se activa

$('body').on('change', '#userFilter', function(){ 
    console.log('changed'); 
}); 

y este elemento se inserta de forma dinámica en la página cuando se hace clic en una pestaña:

<select id="userFilter"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

El problema se que cuando cambio el menú desplegable no se muestra nada en la consola.

+2

Funciona bien para mí: http://jsfiddle.net/KhY8s/. Asegúrese de vincular el controlador de eventos cuando 'body' exista (jQuery 101). De la [jQuery ** tutorial **] (http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery#Hello_jQuery): * "Como casi todo lo que hacemos cuando usamos jQuery lee o manipula el modelo de objetos del documento (DOM), debemos asegurarnos de comenzar a agregar eventos, etc. tan pronto como el DOM esté listo. Para ello, registramos un evento listo para el documento. "*. ¿Por qué parece que nadie lo está leyendo? –

+0

Por favor, marque la respuesta :) – Archer

+1

Solo una nota rápida para ayudar a otros que podrían haber cometido el mismo error estúpido: asegúrese de no tener una identificación duplicada accidental, por ejemplo, si tiene un div con la misma identificación que su filtro , el evento de cambio no va a disparar! – Steve

Respuesta

18

lo envuelve en $(document).ready(function(){....}) de manera que el control HTML userFilter se añade a DOM y disponible para javascript

$(document).ready({ 
    $('body').on('change', '#userFilter', function(){ 
     console.log('changed'); 
    }); 
}); 

El manejador pasado a ready() está garantizado para ser ejecutado después de que el DOM está listo , por lo que este suele ser el mejor lugar para conectar todos los demás controladores de eventos y ejecutar otro código jQuery, jQuery docs.

+0

Eso lo solucionó. ¡Gracias! –

+1

De nada – Adil

+0

Tengo un TextArea dentro de un UpdatePanel y lo anterior no funciona para mí por alguna razón:/¿Alguna sugerencia? Gracias. – SearchForKnowledge

0

Aunque un poco relacionado con el OQ, si tienes por aquí debido a que su selección no disparaban, asegúrese de que en un momento anterior no marcó el "evitar que la página que muestra ..." en el alert(). Tendría que cerrar la pestaña y volver a abrir esa URL para que vuelva a activarse de forma visible.

Cuestiones relacionadas