我有一个Bootstrap 4.3.1 Popover,内容中嵌入了一个Table。所有的东西都被展示出来了,但table没有。在下面的代码中,我尝试了content
的函数以及直接$('#a02').html()
。
$("[data-toggle=popover]").popover({
html: true,
content: function() { return $('#a02').html(); }, // Also tried directly without function
title: 'Test'
}).click(function() {
$(this).popover('show');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<a href="#" data-toggle="popover" data-trigger="focus" data-placement="right">
Click Here for Popover
</a>
<div id="a02" style="display: none;">
Some text before table
<div>
<table width="100%">
<thead>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
</div>
有些人试着向我展示了一个与Bootstrap 3一起工作的JSFiddle。我把他们的JSFiddle,只是改变了Bootstrap参考4,它打破了。Bootstrap 3 JSFiddle| Bootstrap 4 JSFiddle
6条答案
按热度按时间gudnpqoy1#
Bootstrap 3.4以上版本在弹出窗口或工具提示内容中显示之前会对HTML标记和属性进行清理。因此,如果标签和属性不在默认白名单中,请确保将其添加到白名单中。
默认的白名单已经列在这里:https://getbootstrap.com/docs/3.4/javascript/#js-sanitizer
白色名单中的新标签可以在下面添加
//为了允许标签显示在弹出体中,我们需要将默认白名单中不存在的标签加入白名单。//默认情况下,当前表及其子表不在白名单中//所以我添加了表标记沿着其他必需的标记
//要允许标签属性,我们可以像这样添加myDefaultWhiteList.td =['data-option']
您还可以添加标记以在弹出框主体中显示HTML内容
swvgeqrz2#
工具提示和弹出框使用内置的消毒程序来消毒接受HTML的选项
https://getbootstrap.com/docs/4.3/getting-started/javascript/#sanitizer
试试这个:
hc2pp10m3#
biri的回答没有错,但你要知道(因为它也有很糟糕的记录),如果你想的话,你可以停用整个消毒剂。
hc2pp10m4#
对于一些如何表不工作在弹出框,但你可以使用其他标签,如
ul
。我刚刚更新了ul
,希望它能帮助你。谢谢另一种方式是在data-content属性中添加HTML。谢谢
gywdnpxw5#
你可以这样做:
链接到Popover Bootstrap 4.0文档更新:Updated JSFiddle
wgmfuz8q6#
添加data-bs-animation=“false”解决了我的问题。