#javascript #jquery #twitter-bootstrap #webpack #bootstrap-4
Вопрос:
Я установил через npm bootstrap 4.6.0 и jquery 3.6.0.
Этот код работает:
import jQuery from "jquery/dist/jquery";
import "bootstrap/dist/js/bootstrap";
(function ($) {
"use strict";
$("[data-toggle='tooltip']").tooltip()
})(jQuery);
Вместо этого этот код не работает, с ошибкой Uncaught TypeError: $(...).tooltip is not a function
Обратите внимание, что единственная разница заключается в том, что вместо jquery используется jquery slim.
import jQuery from "jquery/dist/jquery.slim";
import "bootstrap/dist/js/bootstrap";
(function ($) {
"use strict";
$("[data-toggle='tooltip']").tooltip()
})(jQuery);
Другие функции начальной загрузки (например, свернуть) работают даже с slim.
Похоже, по какой-то причине bootstrap не загружает некоторые функции, такие как всплывающая подсказка (также пытался использовать scrollspy, та же проблема)
Я также пытался console.log($.fn)
, и на самом деле с помощью jquery slim я не могу найти кучу функций…
Комментарии:
1. У вас
popper.js
установлена. Я почти уверен, что всплывающие подсказки работают только сpopper.js
. (убедитесь, что это указано вышеbootstrap.min.js
)2. Вы случайно не настроили ранее ProvidePlugin (веб-пакет) для jquery? Настройте это для slim.
3. @Gunnarhawk я установил popper.js и я предполагаю, что он включен компонентами начальной загрузки (в противном случае первый пример кода не работал бы).
4. @ChristianGollhardt я имею в виду именно то, чтобы избежать плагина. Мне нужно получить jquery в некоторых файлах и jquery slim в других файлах
5. Вы можете избежать этого, но должны смириться с тем фактом, что сломанные модули (например, плагины jquery) не будут работать.
$(...).tooltip
Ответ №1:
Согласно официальной документации Всплывающие подсказки начальной загрузки:
Подсказки основаны на сторонней библиотеке Popper.js для позиционирования. Вы должны включить popper.min.js до того, как bootstrap.js или использовать bootstrap.bundle.min.js / bootstrap.bundle.js который содержит Popper.js для того, чтобы подсказки работали!
Поэтому вам нужно установить его между вашим jQuery и начальной загрузкой. Или вы можете просто установить bootstrap.bundle.min.js и bootstrap.bundle.js который уже содержит Popper.js.