Error de referencia no detectado: ¿$ no está definido?

¿Cómo es que este código arroja un

Error de referencia no detectado: $ no está definido

cuando estaba bien antes?

$(document).ready(function() {
    $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } });
    $('#featuredvid > ul').tabs();
});

Los resultados en las pestañas ya no se cierran.

Se hace referencia a jQuery en el encabezado:

<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>

preguntado el 15 de enero de 10 a las 20:01

/js/jquery-1.2.6.min.js"> Toma esto en la cima -

En mi caso, JQuery estaba en la sección de pie de página, por lo que se llamó primero a la función JS. -

¿Responde esto a tu pregunta? ReferenceError: $ no está definido -

30 Respuestas

Primero debe poner las referencias a los scripts de jquery.

<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>

Respondido el 15 de enero de 10 a las 23:01

Solo para asegurarse de que esto esté claro: no puede poner la referencia del script a jquery-ui antes del script jquery en sí. Eso es lo que me solucionó el problema: primero jquery-xxxmin.js, luego jquery-ui-xxxxxx.js. - Wagner Danda da Silva Filho

2 años después, todavía la respuesta no está "marcada") Este articulo describe este y 4 casos más comunes en los que se produce este error. - uzbeko

@Uzbekjon Eso me resolvió. El camino al guión estaba mal en . de mi HTML archivos. - Adam Jensen

@Jeremy, muchas gracias. También colóquelo antes de cualquier vista parcial (mvc) para que esté disponible para cualquier script en el parcial. - Día de Andrew

@Uzbekjon hace casi 10 años y todavía no está marcado. Gracias por proporcionar el enlace del artículo. - Camino

Está llamando a la función ready antes de que se incluya jQuery JavaScript. Primero haga referencia a jQuery.

Respondido 27 Feb 18, 10:02

@RamSharma En realidad, esta es la respuesta correcta. No necesitas nada más para resolver el problema. - Derek 朕 會 功夫

Sí. Este era mi problema. Simplemente tenía jquery DESPUÉS de hacer referencia a mi archivo js. ¡Oh! - dogonatecho

En mi caso, tuve que eliminar el aplazamiento de clave de - charden daxicén

¿Por qué esta no es la respuesta aceptada? Esto debería ser, porque, Uno tiene que enloquecer al bajar tanto para ver las respuestas reales, ¡eso funciona! Bueno, al menos Google muestra el texto de esta respuesta justo debajo del encabezado; de lo contrario, no tenía ni idea de dónde buscar. Shivam Jha

Esto es lo que me solucionó. Originalmente fui a Google y copié y pegué su fragmento sugerido para jQuery en su página de CDN:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

El fragmento no incluye el HTTP: or HTTPS: en el capítulo respecto a la src atributo, pero mi navegador, FireFox, lo necesitaba, así que lo cambié a: editar: esto también me funcionó con Google Chrome

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Entonces funcionó.

Respondido el 09 de enero de 19 a las 05:01

Estrictamente hablando, el fragmento / ejemplo de Google es correcto: su atributo src es una URL sin protocolo, lo que significa que el navegador debe usar el protocolo (HTTP / HTTPS) de la página de llamada. Ver paulirish.com/2010/the-protocol-relative-url. Esta es la mejor práctica para evitar advertencias de contenido mixto si su página alguna vez se sirve a través de SSL y los scripts no. - pwdst

Un problema común aquí, probablemente, es cuando se utilizan URL relativas al protocolo durante el desarrollo, y en un día soleado intenta cargar una página desde un archivo local. Su navegador intentará cargar de manera optimista file://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js y se pregunta por qué no aparece en la consola de red. - Pieter Ennes

gracias @PieterEnnes, este fue exactamente el caso para mí. ¡Gracias también al contestador! - JWG

Si su secuencia de comandos personalizada se carga antes de que el complemento jQuery se cargue en el navegador, puede ocurrir este tipo de problema. Por lo tanto, siempre mantenga su propio código JavaScript o jQuery después de llamar al complemento jQuery, por lo que la solución para esto es:

Primero agregue el enlace al archivo jQuery alojado en GoogleApis o un archivo jQuery local desde el que descargará http://jquery.com/download/ y aloje en su servidor:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

o cualquier complemento para jQuery. Luego coloque el enlace o código de su archivo de secuencia de comandos personalizado:

<script src="js/custom.js" type="text/javascript"></script>

Respondido el 03 de Septiembre de 14 a las 11:09

If your custom script is loaded before the jQuery plugin is loaded to the browser then this type of problem may occur la respuesta perfecta ... en mi caso, el guión estaba en el pie de página - ecoashu

En mi caso estaba poniendo mi .js archivo antes del enlace del script jQuery, poniendo el .js archivo después de que el enlace del script jQuery resolviera mi problema.

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>

Respondido el 21 de junio de 15 a las 09:06

Solo usé esto para arreglar mi jschart. - indofraiser

esto solucionó el problema, el .js El archivo debe colocarse antes del enlace del script jQuery. - El método científico

De acuerdo, mi problema era diferente, era Seguridad del documento modelo en Chrome.

Mirando las respuestas aquí, era obvio que de alguna manera no estaba cargando mis archivos jquery antes de llamar al $(document).ready() etc. funciones. Sin embargo, todos estaban en las posiciones correctas.

En mi caso, esto se debió a que estaba accediendo al contenido a través de una conexión HTTPS segura, mientras que la página intentaba descargar los datos alojados en CDN de Google, etc. La solución fue almacenarlos localmente y luego incluirlos directamente en lugar de hacerlo desde el CDN cada vez.

Editar: La otra forma de hacer esto es enlazar a todas las cosas alojadas en CDN como https: // en lugar de http: //, entonces el modelo no se queja.

respondido 10 mar '13, 00:03

Además, tenga en cuenta que puede dejar el protocolo fuera de los enlaces y elegirá el apropiado según el contexto (suponiendo que existan versiones http y https). Ver stackoverflow.com/a/3622615/4332 - Adrián Mouat

sí. este resolvió mi problema, estaba cargando los scripts desde una URL como esta ´ // cdnjs.cloudflare.com / ajax / libs / jquery / 1.12.0 / jquery.min.js´. Utilizandocdnjs...Funciona genial - user9869932

El https (en lugar de http) funcionó para mí, gracias. - dacoda

Agregue la biblioteca antes de iniciar el script. Puede agregar cualquiera de estos siguientes CDN para comenzarlo

google:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

Microsoft

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>

Jquery

Si desea cualquier otra versión de Jquery cdn, marque esto aquí.

Después de este:

<script type="text/javascript">
$(function(){
    //your stuff
});
or
$(document).ready(function(){
    //your stuff
});    
</script>

Wordpress:

<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
     //your stuff
});
</script>

Respondido 20 Jul 17, 10:07

Si está en wordpress, es posible que deba cambiar

$(document).ready(function() {

a

jQuery(document).ready(function($){

o agregar

var $ = jQuery;

antes

$(document).ready(function() {

Respondido 09 Jul 15, 09:07

Tuve exactamente el mismo problema y ninguna de estas soluciones anteriores ayudó. sin embargo, acabo de vincular el .css archivos después del .js archivos y el problema desapareció milagrosamente. Espero que esto ayude.

Respondido el 09 de enero de 19 a las 05:01

Primero, para un mejor rendimiento de la representación de la página, siempre debe vincular los archivos CSS antes que los archivos JS. En segundo lugar, el orden de los archivos css y js no debería tener ningún efecto en la situación actual. - uzbeko

"Lo que solucionó su problema no debería solucionar su problema y usted no debería hacer lo que solucionó su problema". - Andrés

En mi caso, tuve este error de referencia ya que el orden de las llamadas al script era incorrecto. Resuelto eso cambiando el orden:

<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>

a

<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>

Respondido 01 Feb 14, 13:02

Principalmente, este fue el problema que yo también encontré cuando ocurre un error de referencia para '$' - Dipak

Quería intentar hacer mi guión asincrónico. Luego lo olvidé y cuando entré en funcionamiento, el archivo .js [personalizado] solo se cargó el 50% del tiempo antes que jQuery.js.

Así que cambié

<script async src="js/script.js"></script>

a

<script src="js/script.js"></script>

Respondido 03 Jul 19, 04:07

Estas llamando al ready() función antes de que se incluya jQuery JavaScript. Primero, haga referencia a jQuery.

Si está en ASP.NET MVC, puede especificar cuándo se debe representar su código JS, haciendo esto:

1, En su page.cshtml envuelve tu <script> etiqueta en una sección, y asígnele un nombre, el nombre común a usar es 'scripts':

@section scripts {
    <script>
        // JS code...
    </script>
}

2, En su _Layout.cshtml añadir página @RenderSection("Scripts", required: false), asegúrese de ponerlo después de hacer referencia a la fuente de Jquery, esto hará que su código JS se procese más tarde que Jquery.

contestado el 15 de mayo de 19 a las 16:05

Tuve el mismo problema y lo resolví poniendo jQuery en la parte superior de todos los códigos javascript que tengo en mi código.

Algo como esto:

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="js/app.js" type="text/javascript"></script>
<script src="js/form.js" type="text/javascript"></script>
<script src="js/create.js" type="text/javascript"></script>
<script src="js/tween.js" type="text/javascript"></script>

La esperanza puede ayudar a alguien en el futuro.

Respondido el 15 de diciembre de 18 a las 07:12

Si está haciendo esto en .Net y tiene el archivo de script referenciado correctamente y jQuery se ve bien, asegúrese de que sus usuarios tengan acceso al archivo de script. El proyecto en el que estaba trabajando (un compañero de trabajo) tenía su web.config denegando el acceso a usuarios anónimos. La página en la que estaba trabajando era accesible para usuarios anónimos, por lo que no tenían acceso al archivo de secuencia de comandos. Dejó caer lo siguiente en web.config y todo estuvo bien en el mundo:

  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

Respondido el 26 de junio de 13 a las 19:06

En mi caso, fue un error tipográfico, olvidé una barra invertida y estaba haciendo referencia a la fuente de forma incorrecta.

Antes src="/scripts/jquery.js"

Después    src="scripts/jquery.js"

Respondido el 04 de Septiembre de 14 a las 16:09

El archivo fuente jquery-1.2.6.min.js no se llama el comando jQuery $() se ejecuta antes de <..src='jquery-1.2.6.min.js'>.

Por favor, corre <.. src="/js/jquery-1.2.6.min.js.."> al principio y asegúrese de que la ruta src sea correcta, luego ejecute el comando jquery

$(document).ready(function() 

Respondido el 27 de Septiembre de 12 a las 13:09

Esto me sucedió antes.

La razón fue que estoy conectando Android a una vista web con un JS. Y envié un parámetro sin comillas.

js.sayHello(hello);

y cuando lo cambié a

js.sayHello('hello');

funcionó.

Respondido el 13 de Septiembre de 13 a las 09:09

No tengo idea de qué significa el parámetro sin comillas ... parece que tuvo un error de referencia. - Aluan Haddad

Tuve un problema en Freemarker y la razón fue la ausencia de comillas simples, por lo que el valor no se trató como una cadena, sino como una variable. torina

Falta su archivo JavaScript, por lo que se produjo este error. Simplemente agregue el archivo JavaScript dentro del <head> etiqueta. Vea el ejemplo:

<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />

o agregue el siguiente código en la etiqueta:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

contestado el 28 de mayo de 13 a las 07:05

El error también se producirá en los dos escenarios siguientes.

  1. Falta el elemento @section scripts en el archivo HTML
  2. Error al acceder a elementos DOM. Por ejemplo, el acceso al elemento DOM se menciona como $ ("js-toggle") en lugar de $ (". Js-toggle"). En realidad falta el punto

Por lo tanto, se deben seguir 3 cosas: verifique que se agreguen los scripts requeridos, verifique si se agregan en el orden requerido y un tercer error de sintaxis en su Java Script.

Respondido 13 Jul 16, 07:07

Si. y para los atributos de identificación $ ('# someDiv') - cagar

ponga el último jquery cdn en la parte superior de su página html principal

Me gusta si su página html principal es index.html

coloque jquery cdn en la parte superior de esta página así

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("h2").hide();
  });
});
</script>
</head>
<body>

<h2>This will hide me</h2>


<button>Click me</button>

</body>
</html>

Respondido 09 Jul 20, 19:07

Al agregar una respuesta a una pregunta de hace diez años con otras treinta y siete respuestas, es muy importante señalar qué aspecto nuevo de la pregunta aborda su respuesta. - jason aller

El nuevo aspecto en mi respuesta es el enlace jquery CDN. En una pregunta, está usando el jquery descargado e incluido en el encabezado usando PHP. Entonces, como mencioné en mi respuesta, he usado jquery CDN, que es una forma precisa, rápida y eficiente de usar el código jquery. - sagar kumar

Cambiar de dónde se carga jQuery no responde a la pregunta sobre tener $ no definida. - jason aller

Me he enfrentado al mismo error. Así que solucioné este problema de mi lado usando el mismo enfoque, así que respondí a esta pregunta cómo lo soluciono. Si será útil para otros, será genial. - sagar kumar

Agregue la biblioteca jQuery antes de su script que usa $ o jQuery para que $ pueda identificarse en los scripts. quitar el guión de la etiqueta en la cabeza y poner fin bady

 <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

luego primero escriba el script en el archivo js add

/*global $ */
$(document).ready(function(){  });

Respondido el 07 de enero de 21 a las 00:01

Doh! Tenía comillas mixtas en mis etiquetas que hicieron que la referencia de jquery se rompiera. Hacer una inspección en Chrome me permitió ver que el archivo no estaba vinculado correctamente.

Respondido el 25 de junio de 12 a las 18:06

En mi caso olvidé incluir esto:

 <script src ="jquery-2.1.1.js"></script>

Anteriormente, incluía solo jquery-mobile que estaba causando este error.

Respondido el 21 de junio de 14 a las 15:06

No ha hecho referencia a una biblioteca jQuery.

Deberá incluir una línea similar a esta en su HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

respondido 23 nov., 18:21

Modifiqué la etiqueta del script para que apunte al contenido correcto y cambié el orden del script para que fuera el correcto en el editor. Pero se olvidó por completo de guardar el cambio.

Respondido 03 Jul 19, 04:07

Tuve un problema similar. Mi servidor de prueba funcionaba bien con "http". Sin embargo, falló en la producción que tenía SSL.

Por lo tanto, en producción, agregué "HTPPS" en lugar de "HTTP" y en la prueba, lo mantuve como es "HTTP".

Prueba:

wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

Producción:

wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', array(), null, false );

wp_register_script( 'custom-script', plugins_url( '/js/custom.js', __FILE__ ), array( 'jquery' ) );

Espero que esto ayude a alguien que esté trabajando en wordpress.

Respondido el 23 de enero de 20 a las 21:01

Tuve un problema similar y fue porque me faltaba un cierre> en un enlace de hoja de estilo.

respondido 10 mar '14, 17:03

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="local_xxx.js"></script>

Tengo un problema similar, y sabes qué, es por la red está desconectada cuando pruebo en la vista web del dispositivo Android y no me doy cuenta, y el js local no tiene problemas para cargar porque no necesita red. Parece ridículo, pero desperdicio mi ~ 1 hora para averiguarlo.

contestado el 05 de mayo de 17 a las 09:05

si está laraveling, ese error aparece en los archivos blade cuando olvidó rodear el código con:

@section('section name')

.......

@endsection

Respondido 16 ago 20, 00:08

Por extraño que parezca, mi problema venía de PHP.

Una llamada a la API REST estaba fallando y, posteriormente, estaba interrumpiendo la carga de las bibliotecas. Dado que la falla fue de la llamada REST, no me estaba dando un error de compilación de php.

Mantenga esto como una opción también, si la carga de jquery parece estar bien.

respondido 11 mar '14, 12:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.