JavaScript не работает с bootstrap 4 + тимелеаф

Я разрабатываю веб-приложение с Spring Boot, Bootstrap 4 и Thymeleaf. Я хочу показать предупреждение о начальной загрузке, а затем оно автоматически скрывается через несколько секунд (точно так же, как уведомление «успешно»).

Я нашел много решений, но всем им нужен JavaScript. Когда я попытался использовать JS в своем проекте, это не сработало.

Я использую шаблон по умолчанию, который используется в других представлениях через layout:decorate = "~{default}". В этом шаблоне по умолчанию у меня есть ссылка и скрипты Bootstrap:

<link rel = "stylesheet" href = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />

...

<script src = "https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src = "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

Если поместить в любом представлении следующий код, он ничего не сделает.

<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:th = "http://www.thymeleaf.org"
	xmlns:layout = "http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate = "~{default}">

    <head>
      ...
    </head>

    <body class = "text-center">
        <div layout:fragment = "content">

            <div class = "product-options">
                <a id = "myWish" href = "javascript:;" class = "btn btn-mini">Add to Wishlist </a>
                <a href = "" class = "btn btn-mini"> Purchase </a>
            </div>
            <div class = "alert alert-success" id = "success-alert">
                <button type = "button" class = "close" data-dismiss = "alert">x</button>
                <strong>Success! </strong> Product have added to your wishlist.
            </div>
            <script type = "text/javascript">
                $(document).ready(function () {
                    $("#success-alert").hide();
                    $("#myWish").click(function showAlert() {
                        $("#success-alert").fadeTo(2000, 500)
                        .slideUp(500, function () {
                            $("#successalert").slideUp(500);
                        });
                    });
                });
            </script>
            ...

        </div>
    </body>

ПРИМЕЧАНИЕ. Это всего лишь пример проверки того, что JS не работает. Беру из эта почта.

Когда я запускаю этот код, отображается предупреждение, но оно никогда не исчезает. Я пробовал много скриптов и никогда не работал.

Может проблема в версии совместимости?

в тимелеафе напишите <script th:inline = "javascript"></script> вместо тега <script type = "text/javascript"><script>

Atanu 13.02.2019 11:39

Большое спасибо @Atanu, мне пришлось добавить th:line, чтобы запустить его правильно.

tovarichML 14.02.2019 09:31
Поведение ключевого слова "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) для оценки ваших знаний,...
1
2
1 346
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Привет, я думаю, что этот пост решает вашу проблему:

Почему jQuery выдает ошибку «fadeOut не является функцией»?

В этой строке <script src = "https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> вы используете тонкую версию Jquery, а не полную, это приглашение, когда я нажимаю ссылку «Добавить в список желаний», вызывает TypeError в консоли инструментов разработчика Firefox.

TypeError: $(...).fadeTo is not a function, это означает, что объект javascript Jquery $("#success-alert") не имеет присоединенной функции fadeTo.

Вы можете получить полную уменьшенную версию здесь: https://code.jquery.com/

Фрагмент из https://code.jquery.com

<script src = "https://code.jquery.com/jquery-3.3.1.min.js"
  integrity = "sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8 = "
  crossorigin = "anonymous"></script>

PS: Если вам не нужен НИИ, вы можете удалить атрибуты integrity и crossorigin.

Спасибо. В этом была проблема. Мне просто нужно перейти на полную версию jquery, и она отлично работает.

tovarichML 14.02.2019 09:33

Мне было интересно, почему многие ответы, связанные с jquery, у меня не работали. Спасибо, это позволило мне использовать много ответов, которые я не мог раньше.

Jake 09.04.2019 00:20

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