当通过 innerHTML 添加 html 内容时,弹出框不显示
Popover not showing when the html content got added through innerHTML
这件事一直困扰着我,如果有人能帮助我,我将不胜感激。
我想从一个已经存在的弹出窗口中取出 innerHTML 并将其放入另一个 div。当我这样做时,另一个 div 内的弹出窗口不起作用。
这是我的头像:
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous"
/>
<script
src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
crossorigin="anonymous"
></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
crossorigin="anonymous"
></script>
正文:
<div id="myPopover" class="com">
<a
class="arrow"
tabindex="0"
role="button"
data-toggle="popover"
data-trigger="hover"
title="Title"
data-content="Content"
><img src="https://i.imgur.com/BQpNMZA.jpg"
/></a>
</div>
<button onclick="myFunction()">Click here</button>
<div id="demo">hej</div>
脚本:
$(function() {
$('[data-toggle="popover"]').popover();
});
function myFunction() {
document.getElementById('demo').innerHTML = document.getElementById(
'myPopover'
).innerHTML;
}
当我按下按钮时,id 为 "demo" 的 div 应该从 id 为 "myPopover" 的 div 中获取 innerHTML。当我在 firefox 中打开检查器时,这似乎有效,问题是没有显示弹出窗口。
您需要将此行添加到 myFunction()
$('[data-toggle="popover"]').popover();
因为您要将 myPopover
div 中的内部 html 添加到 DOM,您需要在新创建的元素上初始化弹出框。否则 Popover 不会知道它。
这件事一直困扰着我,如果有人能帮助我,我将不胜感激。
我想从一个已经存在的弹出窗口中取出 innerHTML 并将其放入另一个 div。当我这样做时,另一个 div 内的弹出窗口不起作用。
这是我的头像:
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous"
/>
<script
src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
crossorigin="anonymous"
></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
crossorigin="anonymous"
></script>
正文:
<div id="myPopover" class="com">
<a
class="arrow"
tabindex="0"
role="button"
data-toggle="popover"
data-trigger="hover"
title="Title"
data-content="Content"
><img src="https://i.imgur.com/BQpNMZA.jpg"
/></a>
</div>
<button onclick="myFunction()">Click here</button>
<div id="demo">hej</div>
脚本:
$(function() {
$('[data-toggle="popover"]').popover();
});
function myFunction() {
document.getElementById('demo').innerHTML = document.getElementById(
'myPopover'
).innerHTML;
}
当我按下按钮时,id 为 "demo" 的 div 应该从 id 为 "myPopover" 的 div 中获取 innerHTML。当我在 firefox 中打开检查器时,这似乎有效,问题是没有显示弹出窗口。
您需要将此行添加到 myFunction()
$('[data-toggle="popover"]').popover();
因为您要将 myPopover
div 中的内部 html 添加到 DOM,您需要在新创建的元素上初始化弹出框。否则 Popover 不会知道它。