I’m often having difficulty figuring out how to include Javascript snippets in individual components/pages with Nuxt. In the code below, I am getting $ is undefined:
<script> export default { created() { this.$('a[href*=#]:not([href=#])').click(function() { if (location.pathname.replace(/^//,'') == this.pathname.replace(/^//,'') || location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); if (target.length) { $('html,body').animate({ scrollTop: target.offset().top }, 1000); return false; } } }); } } </script>
I’ve also tried removed this. – that gives me $ is undefined. Any help is appreciated – thanks
Advertisement
Answer
You’re trying to use a jQuery syntax request with the $ shortcut function, but jQuery is not included in Nuxt or Vue.
You can install it with npm:
$ npm install jquery
And use it in your component (without this):
<script> import $ from 'jquery'; export default { created() { $(...).click(...); } }
Another way is to import jQuery as global (see nuxt docs) in your nuxt.config.js
:
export default { head: { script: [ { src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js' } ] }