[javascript] JQuery - $ no está definido


Answers

Podría ser que haya llamado a la etiqueta del script antes de invocar el script jquery.

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

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

Esto resulta porque $ no está definido

Coloque el archivo jquery.js antes de la etiqueta del script y funcionará;) de esta forma:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

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

Tengo un simple evento de clic de jquery

<script type="text/javascript">
    $(function() {
        $('#post').click(function() {
            alert("test"); 
        });
    });
</script>

y una referencia jquery definida en el sitio.master

<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>

He comprobado que el guión se está resolviendo correctamente, puedo ver el marcado y ver el guión directamente en Firebug, así que me deben encontrar. Sin embargo, todavía estoy recibiendo:

$ no está definido

y no de los jquery funciona. También probé las diferentes variaciones de esto como $ (document) .ready y jQuery, etc.

Es una aplicación MVC 2 en .net 3.5, estoy seguro de que estoy siendo muy tupido, en todas partes, en google dice: compruebe que el archivo sea una referencia correcta, lo que he verificado y comprobado nuevamente, ¡por favor asesórese! : /




Recibí el mismo mensaje de error cuando escribí mal la referencia jQuery y en lugar de type="text/javascript" escribí "... javascirpt". ;)




después de algunas pruebas encontré una solución rápida, puede agregarla en la parte superior de su página de índice:

<script>
$=jQuery;
</script>

funciona muy bien :)




Use una sección de scripts en la vista y el diseño maestro.

Coloque todos los scripts definidos en su vista dentro de la sección Scripts de la vista. De esta forma, puede hacer que el diseño maestro se cargue después de que se hayan cargado todos los demás scripts. Esta es la configuración predeterminada cuando se inicia un nuevo proyecto web MVC5. No estoy seguro acerca de las versiones anteriores.

Vistas / Foo / MyView.cshtml:

// The rest of your view code above here.

@section Scripts 
{ 
    // Either render the bundle defined with same name in BundleConfig.cs...
    @Scripts.Render("~/bundles/myCustomBundle")

    // ...or hard code the HTML.
    <script src="URL-TO-CUSTOM-JS-FILE"></script>

    <script type="text/javascript">
      $(document).ready(function () {

        // Do your custom javascript for this view here. Will be run after 
        // loading all the other scripts.            
      });
    </script>
}

Vistas / Compartidas / _Layout.cshtml

<html>
<body>
    <!-- ... Rest of your layout file here ... -->

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

Observe cómo la sección de scripts se procesa al final en el archivo de diseño principal.




Resulta que mi problema era bastante estúpido: había puesto <script href=""> lugar de <script src="">




Tengo el mismo problema y ningún caso me resuelve el problema. Lo único que funciona para mí, está en el archivo Site.master, el siguiente:

<script src="<%= ResolveUrl("~/Scripts/jquery-1.7.1.min.js") %>" type="text/javascript"></script>
<script src="<%= ResolveUrl("~/Scripts/bootstrap/js/bootstrap.min.js") %>" type="text/javascript"></script>

Con src = "<% = ResolveUrl (" ") ... la carga de jQuery en las páginas de contenido es correcta.




Al usar jQuery en asp.net, si está utilizando una página maestra y está cargando el archivo fuente jquery allí, asegúrese de tener el encabezado contentplaceholder después de todas las referencias de script de jquery.

Tuve un problema donde las páginas que usaban esa página maestra devolverían '$ no está definido' simplemente porque la orden incorrecta hacía que el código del lado del cliente se ejecutara antes de que se creara el objeto jquery. Así que asegúrese de tener:

<head runat="server">
    <script type="text/javascript" src="Scripts/jquery-VERSION#.js"></script>
    <asp:ContentPlaceHolder id="Header" runat="server"></asp:ContentPlaceHolder>
</head>

De esta forma, el código se ejecutará en orden y podrá ejecutar el código jQuery en las páginas secundarias.




Tuve este problema una vez sin razón aparente. Sucedió localmente mientras estaba ejecutando el servidor de desarrollo aspnet. Había estado funcionando y revertí todo a un estado en el que anteriormente había estado funcionando y todavía no funcionaba. Busqué en el depurador de Chrome y el jquery-1.7.1.min.js se cargó sin ningún problema. Todo fue muy confuso. Todavía no sé cuál era el problema, cerré el navegador, cerré el servidor de desarrollo y luego lo intenté nuevamente.




Si la llamada al plugin jQuery está al lado de </body> , y su script se carga antes de eso, debe hacer que su código se ejecute después del evento window.onload , como este:

window.onload = function() {
  //YOUR JQUERY CODE
}

`

por lo tanto, su código se ejecutará solo después de la carga de la ventana, cuando se hayan cargado todos los activos. En ese punto, se definirá jQuery ( $ ).

Si usas eso:

$(document).ready(function () {
  //YOUR JQUERY CODE
});

`

el $ aún no está definido en este momento, porque se llama antes de que se cargue jQuery, y su secuencia de comandos fallará en esa primera línea en la consola.




Estaba teniendo el mismo problema y no podía entender qué lo estaba causando. Recientemente convertí mis archivos HTML de japonés a UTF-8, pero no hice nada con los archivos de script. De alguna manera, jquery-1.10.2.min.js se corrompió en este proceso (todavía no tengo idea de cómo). Reemplazando jquery-1.10.2.min.js con el original se lo arregló.




Después de haber intentado todo aquí sin ningún resultado, resolví el problema simplemente moviendo la etiqueta script src de cuerpo a cabeza




asegúrate de que realmente cargas jquery, esto no es jquery, ¡es el ui!

  <script language="JavaScript" 
    src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js">
  </script>

Esta es una fuente de script correcta para jquery:

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



Yo uso Url.Content y nunca tengo un problema.

<script src="<%= Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>



Esto funcionó para mí (proyecto MVC5):

<script src="~/Scripts/jquery-1.10.2.js" type="text/javascript"></script>



Tuve el mismo problema y fue porque mi referencia a jQuery.js no estaba en la etiqueta. Una vez que cambié eso, todo comenzó a funcionar.

Antonio






Related