Невозможно использовать jQuery в файле Laravel Blade

Я пытаюсь определить Javascript для моей страницы в моем файле лезвия, определив для него отдельный раздел в файле. Я могу добавить тот же код jQuery в файл app.js, и он работает без проблем, но когда я помещаю его в файл лезвия, я получаю сообщение об ошибке

Uncaught ReferenceError: $ is not defined

Файл макета - app.blade.php

<!DOCTYPE html>
<html lang = "en">

<head>
    <meta charset = "utf-8">
    <meta http-equiv = "X-UA-Compatible" content = "IE=edge">
    <meta name = "viewport" content = "width=device-width, initial-scale=1">

    <meta name = "csrf-token" content = "{{ csrf_token() }}">

    <title>{{ config('app.name', 'Laravel') }}</title>
    <script src = "{{ asset('js/app.js') }}" defer></script>
    <link rel = "dns-prefetch" href = "https://fonts.gstatic.com">
    <link href = "{{ asset('css/app.css') }}" rel = "stylesheet">
</head>

<body class = "fixed-nav sticky-footer bg-dark" id = "page-top">
    <!-- Navigation-->
    <nav class = "navbar navbar-expand-lg navbar-dark bg-dark fixed-top" id = "mainNav">
        <!-- Nav Stuff -->
    </nav>
    <!--  End Navigation -->
    <!--  Body  -->
    <div class = "content-wrapper">
        <div class = "container-fluid">
            @yield('content')
        </div>
        <footer class = "sticky-footer">
            <!-- footer stuff -->
        </footer>
    </div>
    @yield('script')
</body>
</html>

Страница содержимого - page1.blade.php

@extends('layouts.app')

@section('content')
<div class = "container">
    <!--  Page Stuff -->            
</div>
@endsection

@section('script')
<script>
    $(document).ready(function()
    {
        alert('hello world');
    });
</script>
@endsection

Я бы предпочел не помещать весь свой Javascript в один файл app.js, я хотел бы иметь возможность нормально использовать этот раздел. Прямой Javascript здесь отлично работает, а jQuery - нет.

редактировать:

Вот файл app.js, который включает библиотеку jQuery.

require('jquery');
require('./bootstrap');
require('jquery-easing');

//  Administration Controller - Add System Type -> This code works just fine.
var numSysDataRows = 5;
$('#add-customer-information').click(function()
{
    $('#system-customer-information').append('<div class = "form-group"><label for = "col'+numSysDataRows+'">System Data:</label><input type = "text" name = "col[]" id = "col'+numSysDataRows+'" class = "form-control" /></div>');
    numSysDataRows++;
});

Если я посмотрю на исходный код и проверю файл app.js с веб-сервера, я действительно вижу, что jQuery загружен в файл app.js.

Так где же в коде включен источник jquery?

MaxZoom 05.05.2018 04:44

Кажется, в вашем клинке нет загрузки jquery.js

Truong Dang 05.05.2018 05:24

Jquery загружен в мой файл app.js. Нужно ли мне загружать его второй раз на главной странице?

Ron Butcher 05.05.2018 05:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
3 709
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Я не вижу, чтобы вы добавляли загрузку файлов и jquery. Вы уже добавили файл jQuery и Bootstrap? Если нет, вы можете увидеть здесь: jqueryBootstap

Ответ принят как подходящий

Laravel загружает jQuery по умолчанию, поэтому он будет там, если вы не удалите его из своего собранного app.js (выполняя команды npm для компиляции из ваших ресурсов). Проблема в том, что вы откладываете этот сценарий. jQuery загружается после запуска JavaScript страницы.

Попробуйте удалить команду defer.

Если это не сработает, посмотрите, есть ли jQuery в вашем файле app.js. Если нет, используйте компакт-диск или скопируйте его в общую папку.

Я отредактировал вопрос, чтобы показать файл app.js. Он загружает jQuery (и да, я его скомпилировал). Где команда "отложить"?

Ron Butcher 05.05.2018 06:34

Удалите из: <script src = "{{ asset('js/app.js') }}" defer></script>

parker_codes 05.05.2018 08:40

Вам не нужно удалять "defer" из <script src = "{{ asset('js/app.js') }}" defer></script>.

Вставьте теги сценария jquery ниже app.js, затем

  1. установить npm
  2. удалить шаблон vue в resouces / js / app.js
  3. введите "npm run dev" и нажмите Enter.
  4. повторить №3 2 раза

Тогда никакого Uncaught ReferenceError: $ is not defined не появится

НПМ

Да, я добавил теги скрипта jquery Теги скрипта jquery

Другие вопросы по теме