Использование jQuery через ES6 в Symfony 4

Я создаю довольно простое приложение с использованием Symfony 4. В настоящее время Symfony загружает Jquery и начальную загрузку и хочу начать создавать свои собственные триггеры. Итак, я начал добавлять свой собственный кусочек JS. В этом JS мне нужно определить, нажата ли определенная кнопка, поэтому мой инстинкт заключается в использовании функции нажатия jQuery.

У меня есть реальная проблема, чтобы заставить это работать. Мой дополнительный код компилируется Webpack (через бис), но ни в коем случае не сработает мое событие, независимо от того, на какой элемент я его поместил. Насколько я вижу, моя дополнительная функциональность Javascript никогда не вызывается вообще.

Любая помощь приветствуется. Я ни в коем случае не эксперт по ES6, поэтому я могу сказать, что здесь ОЧЕНЬ неправильно.

активы / JS /app.js

import '../css/app.scss';
import $ from 'jquery';
import 'bootstrap';
import './checkLoan'; ## This is my file

приложение / JS /checkLoan.js

export default function() {
    console.log('i got loaded');
    $('#my-button').click(function (event) {
        event.preventDefault();
        console.log('I got clicked')
    });
};

1 ответ

Решение

Эй, ваш прослушиватель кликов никогда не срабатывает, потому что вы импортируете его, но никогда не вызываете функцию.

Вы можете создать свои функции слушателя в отдельном файле, таком как listener.js:

export default {
    clickListener(){
        console.log('i got loaded');
        $('#my-button').click(function (event) {
            event.preventDefault();
            console.log('I got clicked')
        });
    }
};

И вызовите функции в вашем главном app.js после завершения загрузки страницы:

import $ from 'jquery';
import listeners from "./listeners"
$(document).ready(function () {
    listeners.clickListener();
    ...
});

РЕДАКТИРОВАТЬ: Также убедитесь, что в файле webpack.config.js в корне вашего проекта есть следующая строка без комментариев

.autoProvidejQuery()
Другие вопросы по тегам