Montando mi portfolio me encontré con este error, y pensé en compartirlo. Puede que al añadir un jQuery que supuestamente funciona, no veamos resultado alguno mientras que la consola de errores muestra lo siguiente: «Uncaught ReferenceError: $ is not defined». No debemos alarmarnos puesto que la cosa puede resultar bastante sencilla.
En el siguiente código vemos dos líneas que deberían ir en el <HEAD>, la primera correspondiente al script del efecto en cuestión y la segunda a jQuery, la cuál siempre debe estar presente.
<script type="text/javascript" src="js/miefecto.js"></script>
<script type="text/javascript" src="js/jquery.min.js"></script>
Puede haber dos posibles soluciones:
1. En este caso el error reside en que la primera línea debería ser siempre la referencia a los scripts de jQuery, después es cuando podremos poner la referencia a nuestro script en particular, sino no nos lo ejecutará. Quedaría de este modo:
<script type="text/javascript" src="js/jquery/jquery.min.js"></script>
<script type="text/javascript" src="js/miefecto.js"></script>
2. Sin embargo, puede que no nos ejecute por haber cometido algún error escribiendo nuestra línea, como por ejemplo, utilizar una ruta relativa: «js/jquery.min.js», cuando deberíamos utilizar una ruta absoluta: «/js/jquery.js», quedando de la siguiente manera:
<script type="text/javascript" src="/js/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/js/miefecto.js"></script>
Hay que recordar que puede que no tengamos los archivos «.js» en la misma ruta. Si el problema persiste deja un comentario y le echaré un ojo. En la red se pueden encontrar bastante respuestas al respecto pero muy poco en castellano, así que si llegas aquí googleando espero haber servido de ayuda.