Bootstrap 如何使用Bootstap 5手动隐藏弹出框?

wpx232ag  于 2023-11-15  发布在  Bootstrap
关注(0)|答案(1)|浏览(179)

我试图创建多个Bootstrap弹出窗口示例,并能够在单击时关闭所有示例。
我是这么做的

document.addEventListener('DOMContentLoaded', function () {

    var items = [];

    document.getElementById('addPopperButton', function () {
        var btn = document.createElement('button');
        btn.setAttribute('type', 'button');
        btn.innerText = 'Toggle poppver';

        var item = new bootstrap.Popover(btn, {
            trigger: 'hover click',
            title: 'lorem text',
            content: 'lorem text'
        });

        items.push(item);

        document.body.appendChild(btn);
    });

    document.getElementById('hideAllPopovers', function () {
        items.forEach(item => {
            item.popover('hide');
        });
    });

});

字符串
然而,这一直给我以下错误
未捕获的TypeError:item.popover不是函数
如何在单击hideAllPopovers时手动隐藏所有弹出框示例?

wb1gzix0

wb1gzix01#

Bootstrap 5中,可以通过hide方法隐藏弹出框:

const popoverInstance = new bootstrap.Popover(triggerElement, options);

// manually hide
popoverInstance.hide()

字符串
$().popover('hide')在Bootstrap v3和4中使用。
在您的代码中,item是一个popover示例,因此您应该将item.popover('hide');替换为item.hide();

document.getElementById('hideAllPopovers').addEventListener('click', () => {
  items.forEach((item) => {
    item.hide();
  });
});

Stackblitz demohttps://stackblitz.com/edit/stackblitz-starters-chdxor?file=src%2Findex.js

来自Bootstrap 5文档hide方法:
隐藏元素的弹出框。在弹出框实际隐藏之前(即在hidden.bs.popover事件发生之前)返回给调用方。这被认为是弹出框的“手动”触发。

相关问题