Necesito cambiar el comportamiento de la biblioteca jQuery (selector de rango de fechas), tiene un código como este:
box.find('.month').off("change").change(function(evt) { dateChanged($(this)); }); box.find('.year').off("change").change(function(evt) { dateChanged($(this)); });Esos son dos elementos selectos. No devuelve falso y las funciones dentro del controlador no acceden al evento. Pero por alguna razón, mis eventos que usan delegación no funcionan. Son ignorados.
$picker.on('change', 'select', function() { console.log('CHANGE'); });El registro de la consola no se está ejecutando, pero si elimino las líneas anteriores de la biblioteca, mi código de delegación de eventos funciona bien.
NOTA: $picker es un objeto en mi código que es padre del elemento de cuadro. Pero también tengo un evento agregado en $(document) que tampoco funciona.
Primera vez que veo algo así. Agregar un evento directamente al elemento evita la propagación del evento. ¿Alguien puede explicar qué está pasando aquí? ¿Está esto documentado en alguna parte?
Esto sucede en Firefox y Chrome.
Si alguien necesita un ejemplo simple, puedo crear uno. Pero pensé que esto se explica por sí mismo.
EDITAR: he creado una reproducción simple y funciona bien. Tengo una aplicación compleja con muchos archivos (aplicación R Shiny), pero no veo ningún evento de cambio en las herramientas de desarrollo. ¿Hay alguna forma de hacer que el evento no se propague? Tal vez usando la captura de eventos. ¿Qué debo buscar para encontrar el código que impide que los eventos se propaguen?