Uncaught ReferenceError: $ is not defined?

Viewed 2672050

How come this code throws an

Uncaught ReferenceError: $ is not defined

when it was OK before?

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

Results in tabs don't close anymore.

jQuery is referenced in the header:

<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>
40 Answers

You should put the references to the jquery scripts first.

<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>

You are calling the ready function before the jQuery JavaScript is included. Reference jQuery first.

I had the exact same problem and none of these solutions above helped. however, I just linked the .css files after the .js files and the problem miraculously disappeared. Hope this helps.

You are calling the ready() function before the jQuery JavaScript is included. Reference jQuery first.

If you're in ASP.NET MVC, you can specify when your JS code should be rendered, by doing this:

1, In your page.cshtml wrap your <script> tag into a section, and give it a name, the common name to use is 'scripts':

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

2, In your _Layout.cshtml page add @RenderSection("Scripts", required: false), make sure to put it after you reference the Jquery source, this will make your JS code render later than the Jquery.

Add jQuery library before your script which uses $ or jQuery so that $ can be identified in scripts. remove tag script on head and put end bady

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

then first write script in file js add

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

I had the same problem , and I solved by putting jQuery at the top of all javascript codes I have in my code.

Something like this:

<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>

Hope can help some one in future.

put latest jquery cdn on top of your main html page

Like If your main html page is index.html

place jquery cdn on top of this page like this

<!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>

Include the jQuery CDN (or jQuery ref) in the index file first. before including your JS file to ensure we are accessing the jQuery. following lines worked for me

Can get a clear idea about this by referring to the following link reference site:

https://www.tutorialrepublic.com/faq/how-to-fix-dollar-is-not-defined-error-in-jquery.php

Answer: Execute Code after jQuery Library has Loaded
The most common reason behind the error "Uncaught ReferenceError: $ is not defined" is executing the jQuery code before the jQuery library file has loaded. Therefore make sure that you're executing the jQuery code only after jQuery library file has finished loading.

You have not referenced a jQuery library.

You'll need to include a line similar to this in your HTML:

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

if you are laraveling that error comes on in blade files when you forgot to surround the code with :

@section('section name')

.......

@endsection

Root problem is a ReferenceError. MDN indicates that a try/catch block is the proper tool for the job. In my case, I was getting uncaught reference error for a payment sdk/library. The below works for me.

try {
  var stripe = Stripe('pk_test_---------');
} catch (e) {
    stripe = null;
}

if(stripe){
  //we are good to go now
}

Obviously the fix is to load whatever SDK/library, e.g. jQuery, prior to calling its methods but the try/catch does keep your shared JavaScript from barfing up errors in case you run that shared script on a page that doesn't load whatever library you use on a subset of pages.

I had this problem when tried to run different web-socket samples.

When pointing browser to 'http://localhost:8080/' I got this error, but pointing exactly to 'http://localhost:8080/index.html' gave no error since in 'index.html' all was fully ok - jquery was included before using $..

Somehow autoforwarding to index.html not fully worked

In my case, the problem has been solved after installing Windows Server Role Service 'Static Content'. ( OS : Windows Server 2008 R2 )

How to install the 'Static Content' Server Role Service :

  • ( Assuming that the 'Web Server' Role is already installed ) > Run Server Manager > Click 'Roles' in left pane > click 'Add Role Services' in the 'Web Server' area in right pane > select 'Static Content' under 'Web Server / Common HTTP Features' > Click 'Next' > ...
$(document).ready(function() {
                $.getJSON("<?php echo site_url('cadmin/survey/chart_survey_assisten'); ?>", function (json) { 
                    var acctregs = new Morris.Donut({
                                // ID of the element in which to draw the chart.
                                element: 'hadir-chart-bar-assisten',
                                // Chart data records -- each entry in this array corresponds to a point on
                                // the chart.
                                data: json,
                                xkey: 'label',
                                ykeys: ['value'],
                                labels: ['Nilai'],
                                barRatio: 0.4,
                                xLabelAngle: 35,
                                hideHover: 'auto',
                                resize: true
                            });
                });
           });
Related