如何用纯 JavaScript 初始化 Bootstrap 4 中的工具提示?没有 jQuery
How to initialize Tooltips in Bootstrap 4 with pure JavaScript? No jQuery
我不知何故受困于这段代码:
$(function () {
$('[data-toggle="tooltip"]').tooltip()
});
我想将其更改为纯 JavaScript。我不确定如何调用工具提示功能,我已经有了一些想法,例如:
var tooltips = document.querySelectorAll("[data-toggle='tooltip']");
for(var i = 0; i < tooltips.length; i++){
//this gives an error
tooltips[i].tooltip();
}
我可以获取所有工具提示,但我无法对其进行初始化。如果我这样写:
$(tooltips[i]).tooltip();
然后就可以了,但是我想删除 jQuery 依赖项,因为这是我唯一的 jQuery 部分。任何想法?我一直在寻找,但找不到任何有用的东西。
对于新的 Bootstrap 5,这将是没有 jQuery 的新选项:
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
更多信息:https://getbootstrap.com/docs/5.0/components/tooltips/
注:
在Bootstrap4中,没有jQuery就不能初始化工具提示。这是一个例子:
https://jsfiddle.net/30c6kmnL/
存在对 function/class Tooltip
的依赖,如果没有 jQuery 就无法调用(据我所知)(您可能需要重写整个工具提示 function/class ).我遇到了这样的错误:
Uncaught TypeError: bootstrap.Tooltip is not a constructor
如果您知道如何修复它,请在代码段上进行修复并分享您的结果。
我想我会使用同样针对 Bootstrap 4.x 的纯 JS 给出一个答案。下面的代码片段将在 Bootstrap 4.x.
中初始化页面上的所有工具提示
function setTooltips() {
let tooltips = document.querySelectorAll('[data-toggle="tooltip"]');
for(let i = 0; i < tooltips.length; i++) {
let tooltip = new bootstrap.Tooltip(tooltips[i]);
}
}
我会在 DOMContentLoaded 事件中全局调用它以定位任何页面上的任何工具提示。
window.addEventListener('DOMContentLoaded', function() {
setTooltips();
}, false);
Bootstrap 5 做事不同,使用 Federico 的回答,这是 Bootstrap 5+ 中初始化工具提示的默认方式。
我不知何故受困于这段代码:
$(function () {
$('[data-toggle="tooltip"]').tooltip()
});
我想将其更改为纯 JavaScript。我不确定如何调用工具提示功能,我已经有了一些想法,例如:
var tooltips = document.querySelectorAll("[data-toggle='tooltip']");
for(var i = 0; i < tooltips.length; i++){
//this gives an error
tooltips[i].tooltip();
}
我可以获取所有工具提示,但我无法对其进行初始化。如果我这样写:
$(tooltips[i]).tooltip();
然后就可以了,但是我想删除 jQuery 依赖项,因为这是我唯一的 jQuery 部分。任何想法?我一直在寻找,但找不到任何有用的东西。
对于新的 Bootstrap 5,这将是没有 jQuery 的新选项:
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
更多信息:https://getbootstrap.com/docs/5.0/components/tooltips/
注:
在Bootstrap4中,没有jQuery就不能初始化工具提示。这是一个例子: https://jsfiddle.net/30c6kmnL/
存在对 function/class Tooltip
的依赖,如果没有 jQuery 就无法调用(据我所知)(您可能需要重写整个工具提示 function/class ).我遇到了这样的错误:
Uncaught TypeError: bootstrap.Tooltip is not a constructor
如果您知道如何修复它,请在代码段上进行修复并分享您的结果。
我想我会使用同样针对 Bootstrap 4.x 的纯 JS 给出一个答案。下面的代码片段将在 Bootstrap 4.x.
中初始化页面上的所有工具提示function setTooltips() {
let tooltips = document.querySelectorAll('[data-toggle="tooltip"]');
for(let i = 0; i < tooltips.length; i++) {
let tooltip = new bootstrap.Tooltip(tooltips[i]);
}
}
我会在 DOMContentLoaded 事件中全局调用它以定位任何页面上的任何工具提示。
window.addEventListener('DOMContentLoaded', function() {
setTooltips();
}, false);
Bootstrap 5 做事不同,使用 Federico 的回答,这是 Bootstrap 5+ 中初始化工具提示的默认方式。