【问题标题】:How to run js function after popover content loads - after button click?如何在弹出内容加载后运行 js 功能 - 单击按钮后?
【发布时间】:2019-03-17 21:29:53
【问题描述】:
我有来自 W3 学校网站的这种引导弹出窗口,并根据我的情况编辑了代码(请参阅 onPopoverHtmlLoad() 函数):
<!DOCTYPE html>
<!-- https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_popover&stacked=h -->
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h3>Popover Example</h3>
<a href="#" data-toggle="popover" data-html='true'title="Popover Header" data-content="Some content inside the popover <button id='inpopover_button'>false</button>">Toggle popover</a>
</div>
<script>
$(document).ready(function(){
$('[data-toggle="popover"]').popover();
});
//how to ensure to run this function on popoverHtmlDomLoad?
function onPopoverHtmlLoad(){
document.getElementById("inpopover_button").innerHTML = "true"
}
</script>
</body>
</html>
问题是,我如何在点击后更改弹出框的 HTML 数据内容
弹出按钮/触发器,好吗?有没有类似的功能
onHtmlDomPopoverLoad?
我很欣赏 Javascript 中的解决方案,但也接受 JQuery 帮助。我一直在寻找类似的问题,但还没有找到任何东西。
【问题讨论】:
标签:
javascript
jquery
html
popover
【解决方案1】:
您可以将onPopoverHtmlLoad 替换为:
function onPopoverHtmlLoad(){
$("#inpopover_button").text("true")
}
并附加事件处理程序:
$('[data-toggle="popover"]').on('shown.bs.popover', onPopoverHtmlLoad)
查看codepen:https://codepen.io/anon/pen/MxXwQe
【解决方案2】:
在此处阅读有关引导弹出窗口事件的信息:
https://getbootstrap.com/docs/4.0/components/popovers/#events
$('#myPopover').on('hidden.bs.popover', function () {
// do something…
})
<!DOCTYPE html>
<!-- https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_popover&stacked=h -->
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h3>Popover Example</h3>
<a href="#" data-toggle="popover" data-html='true'title="Popover Header" data-content="Some content inside the popover <button id='inpopover_button'>false</button>">Toggle popover</a>
</div>
<script>
$(document).ready(function(){
$('[data-toggle="popover"]').popover()
.on('shown.bs.popover', onPopoverHtmlLoad);
});
//how to ensure to run this function on popoverHtmlDomLoad?
function onPopoverHtmlLoad(){
document.getElementById("inpopover_button").innerHTML = "true"
}
</script>
</body>
</html>