Paso 1: excluir jQuery
Abre Ajustes → WP Rocket → JavaScript & CSS. Justo debajo de Cargar archivos JavaScript de manera diferida está el campo Excluir archivos JavaScript. Añade esta línea:
/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js

Ojo: hay dos campos llamados Excluir archivos JavaScript. El primero pertenece a Minificar archivos JavaScript. El que necesitas es el segundo, justo debajo de Cargar archivos JavaScript de manera diferida.
Paso 2: exclusiones con un clic, si usas Retrasar la ejecución de JavaScript
Si Retrasar la ejecución de JavaScript está activado, abre debajo las Exclusiones con un clic, despliega Plugins y marca Elementor, Elementor Pro y Elementor Pro – SmartMenus. Si usas en Elementor la carga diferida de imágenes de fondo, marca también Elementor – Lazy Load Background Images.

Paso 3: guardar y probar bien
Haz clic en Guardar Cambios y Optimizar. Al hacerlo, WP Rocket vacía la caché. Después prueba en el móvil, así:
- en una ventana privada, para que no se use nada de la caché del navegador
- sin desplazarte, toca primero el menú
- recarga varias veces y repite
Lo de varias veces es importante. El fallo no aparece siempre, mira más abajo.

Por qué pasa
Cargar archivos JavaScript de manera diferida lleva todos los scripts al final, también jQuery. jQuery avisa entonces de que está «listo» mientras los demás scripts siguen cargándose. Elementor arranca al momento y lanza su señal de inicio. Si Elementor Pro aún no se ha cargado en ese instante, se pierde la señal.
El menú, el carrusel y la ventana emergente vienen de Elementor Pro, así que nunca se activan. No hay ningún mensaje de error y la página se ve normal, simplemente no responde.
Es una carrera: unas veces Elementor Pro llega a tiempo y otras no. Por eso cuesta tanto encontrar el fallo. Con qué frecuencia falló en nuestro laboratorio, 24 cargas nuevas en el móvil en cada caso (dos rondas de 12):
| jQuery excluido | Habilitar para imágenes de fondo en CSS | El menú y el carrusel funcionan |
|---|---|---|
| no | desactivado | 23 de 24 |
| no | activado | 6 de 24 |
| sí | desactivado | 24 de 24 |
| sí | activado | 24 de 24 |
Con la línea de jQuery, jQuery vuelve a cargarse de forma normal y solo avisa de que está «listo» cuando todos los demás scripts han llegado. Eso cuesta algo de tiempo de carga, en nuestro caso 0,4 segundos en el móvil. A cambio, la página funciona en todas las cargas.
Si sigue sin funcionar
- Comprueba que la causa es WP Rocket: añade
?nowprocket=1a la dirección de tu página. Así WP Rocket la sirve sin optimizar. Si el menú funciona de esa forma, la causa es WP Rocket. - Desactiva Cargar archivos JavaScript de manera diferida para probar. Si el menú funciona entonces, falta una exclusión. Si usas complementos de Elementor (por ejemplo, complementos de menú), puede que sus scripts necesiten exclusiones propias. Muchos ya están en las Exclusiones con un clic.
- Retrasar la ejecución de JavaScript sin exclusiones: en nuestra prueba, el menú tardaba alrededor de un segundo en abrirse tras el primer toque y el carrusel no arrancaba hasta el primer toque. La opción no hizo la página más rápida. Con Elementor la dejamos desactivada.
- Caché del servidor o de una CDN: si tu hosting o una CDN también guardan caché, vacíala allí también.
Todas las cifras y la configuración completa están en WP Rocket para Elementor: cada ajuste medido.
Para curiosos de la técnica: cómo lo comprobamos
- Laboratorio: WordPress 7.1.4, PHP 8.4, Elementor 4.3.6, Elementor Pro 4.3.2, WP Rocket 3.24 con «Eliminar el CSS no utilizado», «Cargar archivos JavaScript de manera diferida», LazyLoad y fuentes. Página de referencia con menú hamburguesa (Nav Menu de Elementor Pro), carrusel de opiniones y ventana emergente. Metodología
- Prueba: dos rondas de 12 navegadores nuevos por variante, vista de móvil, cargar la página, esperar 1,5 segundos, comprobar el carrusel, tocar el menú y comprobar al cabo de 1 segundo si está abierto.
- Prueba de la causa: registramos cuándo se llama a
elementorFrontend.init()y cuándo existeelementorProFrontend. En 14 de las 19 cargas que fallaron, Elementor arrancó de forma comprobada antes que Elementor Pro, por ejemplo a los 1828 y 1849 milisegundos. En las otras 5 nuestra medición no mostró diferencias en el orden; también ahí ayudó la exclusión de jQuery. No hubo errores de consola. - La exclusión:
exclude_defer_js=/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js. Así jQuery y jQuery Migrate ya no recibendefer. - Datos en bruto: datos en bruto de la segunda ronda con todas las cargas y marcas de tiempo (de la primera ronda solo se guardaron los totales). Comprobado el 7 de noviembre de 2026.


