Estoy tratando de agregar el hoverIntent complemento a los elementos en mi página, sin embargo, algunos elementos se agregarán al DOM más adelante, lo que significa que tiene que vincular el complemento a elementos futuros también. ¿Cómo haces eso? He visto las mismas preguntas en SO algunas veces, ¿pero nadie tiene una solución clara?jQuery.on() - cómo inicializar tan pronto como se hayan cargado los elementos
Respuesta
No hay soporte en jQuery para hacer esto; es algo que el complemento debe admitir. El enfoque más común es simplemente reiniciar el complemento después de agregar contenido nuevo; que normalmente no es un problema.
Otra opción es usar el liveQuery
plugin, y hacer algo como esto;
$('yourSelector').livequery(function() {
$(this).hoverIntent({
// blah
});
});
Escribí una función 're_init()' que contenía todo el código que necesitaba reinicializarse una vez que se cargaba el nuevo contenido. Solo me di cuenta de que hay más código que el ** hoverIntent ** que necesitaba reinicializarse una vez que comencé con esta función. –
** Para cualquier persona que se tropiece con este problema: ** hoverIntent admite la delegación de eventos sin la necesidad de complementos adicionales. Vea mi respuesta a continuación para un ejemplo. –
La mejor manera de lograr esto es crear un evento personalizado cuando agrega los elementos nuevos a la página. Los suscriptores de este evento pueden llamar a los inicializadores hoverIntent apropiados.
Habrá más soporte nativo en la forma de mutation observers, sin embargo, el soporte del navegador está actualmente próximo a cero.
Escuchar el evento DOMSubtreeModifed
no es confiable y causa problemas de rendimiento.
El soporte del observador de mutaciones se ve bien ahora http://caniuse.com/mutationobserver/embed –
intente cambiar su estructura jquery;
ABC = {
init: function() {//all function names goes here
ABC.myFunction1();
ABC.myFunction2();
ABC.myFunction3();
},
myFunction1: function() {
//code
},
myFunction2: function() {
//code
},
myFunction3: function() {
//code
}//dont put comma last one
}
$(function() {
ABC.init();//calls all functions after everything is initialized and ready.
});
Utilice el parámetro "selector de" para la delegación de eventos.
$('#PARENT').hoverIntent({
over: function() {
console.log($(this));
},
out: function(){
console.log($(this));
},
selector: '.CHILD'
});
Fuente: hoverIntent Documentation
- 1. Indicando a Firebug que se rompa tan pronto como se ejecute Javascript
- 2. Las notificaciones desaparecen tan pronto como finaliza el servicio
- 3. ¿Cómo se pueden destruir las barreras tan pronto como devuelve pthread_barrier_wait?
- 4. ¿cómo se redirige a una página tan pronto como un usuario habilite su javascript?
- 5. ¿Se ha cargado $ .ready antes o después de que se hayan cargado todos los <script> en línea?
- 6. ¿Qué tan pronto se llamará a jQuery (documento)?
- 7. No se puede desplazar en UIScrollView tan pronto como UILabel/otra subvista agregada en Storyboard
- 8. ¿Es posible mostrar un shell solo una vez que se hayan cargado todos los módulos?
- 9. WPF datagrid: confirma los cambios en una columna de casilla de verificación tan pronto como se cambia el valor
- 10. ¿jQuery.on() funciona para elementos que se agregan después de que se crea el controlador de eventos?
- 11. ¿Por qué App_Offline no funciona tan pronto como comienza a cargar dlls?
- 12. MouseEnter/eventos MouseLeave no disparar a los elementos SVG utilizando jQuery.on
- 13. ¿Cómo organizar los elementos en QGridLayout como se muestra?
- 14. directory.GetFiles, ¿cómo hago para escupir elementos como los encuentra?
- 15. Aplicar los widgets jQuery UI a elementos ajax cargado
- 16. mapViewDidFinishLoadingMap: llamado demasiado pronto
- 17. Verifica que se hayan alcanzado los límites de YQL.
- 18. Android no puede usar hdmi en la pestaña de creatividad y necesita ser notificado en todos los dispositivos (máximo) tan pronto como se enchufa hdmi
- 19. Diferencia entre jQuery.one() y jQuery.on()
- 20. $ (document) .ready() se dispara demasiado pronto
- 21. Red de Really Prefer: seleccione mi propio proveedor de red tan pronto como esté disponible (de código)
- 22. ¿Cómo verificar que todas las tareas se hayan completado correctamente?
- 23. ¿Cómo se pueden inicializar los trabajadores con doSMP?
- 24. ¿Cómo se pueden inicializar los campos de clase?
- 25. ¿Inicializar HashMap con una variedad de elementos?
- 26. ¿Cómo se determina si CKEditor está cargado?
- 27. webViewDidFinishLoad: ¿Disparar demasiado pronto?
- 28. Cómo ejecutar código después de que se hayan manejado todos los demás eventos
- 29. ¿Cómo puedo ejecutar un comando solo después de que otros comandos se hayan ejecutado correctamente?
- 30. ¿Cómo puedo confiar en que los encabezados HTTP de SiteMinder no se hayan manipulado?
¿Estás tratando de esperar hasta; imágenes o funciones jquery cargadas? –
Utilice un plugin hoverintent que se implemente como un evento para que admita la delegación .. '" hoverintent "' debe ser un evento, no un método: X – Esailija
@barlas En realidad, no, el nuevo contenido se carga con InfiniteScroll. –