javascript - Bootstrap Popover 内容不起作用
问题描述
我有一个触发弹出框的按钮。它是由另一个脚本生成的。
$('#appendTarget').append('<div class="col-md-3" style="border: 2px solid grey; border-radius: 12px; padding: 5px; margin-bottom: 10px;">' + item.name +
'</div>' +
'<div class="col-md-3"><button class="btn" style="margin-bottom: 10px" onclick="showPopover(this)"><b style="color: red"><img src="Img/gear.png" style="width: 20px; height: 20px"></b></button>');
这是我的触发功能:
function showPopover(element) {
$(element).popover({
html: true,
content: function() {
$('#popover-content').append('<a href="#" class="btn btn-secondary">Edit</a>'
+'<a href="#" class="btn btn-info">Activate</a>'
+'<a href="#" class="btn btn-danger">Delete</a>');
}
});
}
这popover-content
是这样的:
<ul id="popover-content" class="list-group" style="display: none">
</ul>
但它不起作用。但是,如果我将此链接直接添加到<ul>
它的工作原理。但我想动态添加它,以便我可以将 id 分配给每个链接(按钮)。
任何人?为什么 append 在这种情况下不起作用?
编辑
@Arex 有一个很好的观点,即display:none
状态没有改变。我改变了我的功能,它看起来像这样:
function showPopover(element) {
$(element).popover({
html: true,
content: function() {
var popover = $('#popover-content');
popover.show();
popover = popover.append('<a href="#" class="btn btn-secondary">Edit</a>'
+'<a href="#" class="btn btn-info">Activate</a>'
+'<a href="#" class="btn btn-danger">Delete</a>');
return popover;
}
});
}
它有效,但很奇怪......
当我第一次单击时,看起来一切都很好:
最后,当我尝试再次打开它时,它显示空弹出框:/
编辑 2
我添加popover.empty()
并且它有效..但是当我打开和关闭弹出框 2-3 次时,它变成了空的。这开始很烦人-.-
解决方案
我为你创造了这个小提琴。这应该可以帮助你。
HTML:
<div id="appendTarget"></div>
<ul id="popover-content" class="list-group" style="display: none">
</ul>
jQuery:
var isMyPopoverShown = false;
function myPop(element) {
if(isMyPopoverShown === false) {
$(element).popover({
html: true,
content: function() {
$('#popover-content').html('<li><a href="#" class="btn btn-secondary">Edit</a></li>'
+'<li><a href="#" class="btn btn-info">Activate</a></li>'
+'<li><a href="#" class="btn btn-danger">Delete</a></li>');
return $('#popover-content').html();
}
});
}
$(element).popover('toggle');
}
jQuery(document).ready(function() {
$('#appendTarget').append('<div class="col-md-3" style="border: 2px solid grey; border-radius: 12px; padding: 5px; margin-bottom: 10px;">Item' +
'</div>' +
'<div class="col-md-3"><button class="btn" style="margin-bottom: 10px" onclick="myPop(this);" data-trigger="manual"><b style="color: red">Button</b></button></div>');
$(".btn").on('shown.bs.popover',function(){
isMyPopoverShown = true;
});
});
推荐阅读
- flutter - Dart 函数语法
- vb.net - VB.NET - CSV 导入
- visual-studio-mac - 无法弄清楚如何在 VS Mac 8.5.1 上使用 Live Share
- python - 如何在文件中的一行中检查字典中的任何键,然后在一个 for 循环中使用该键从字典中获取信息
- python - 如何在 DRF 中散列密码?
- amazon-web-services - HTTP订阅的SNS投递策略最大限制
- c++ - 我们可以将 2 个 int 值的乘积分配给 unsigned long long int
- groovy - Spock 在 Mock 对象上调用 setProperty('x', 'test') 而不是 setX('test')
- python - Redis PUB/SUB 可以支持多少个频道?
- c# - 使用同一对象的不同 ID 查询数据库中的项目