Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

blade @push scripts , jquery: $ is not a function

I have a component file:

my-component.blade.php

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>
......
</head>
<body>
........

  <script src="/vendor/jquery/jquery.min.js" defer></script>
  @stack('scripts')
</body>

</html>

otherfile.blade.php

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel


<x-my-component>
.....

@push("scripts")
  <script defer>
    console.log($("body")); // a simple print element
  </script>
@endpush
</x-my-component>

browser console

Uncaught TypeError: $ is not a function

I have tried to use yield and section and got the same result
how can I solve this problem? (I have the jquery file on my public vendor so there’s no way the problem is about jquery import path)

enter image description here

>Solution :

From the documentation for the script element:

Warning: [The defer] attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this case it would have no effect.

So the script that loads jQuery is executed after the document is parsed and the script which tries to use it is executed immediately (because the defer attribute is ignored) which is before $ is added to the scope of the page.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading