此解决方案适用于一个按钮案例:Is it possible to use a div as content for Twitter's Popover
但是在我的页面中,我有一堆弹出窗口(例如50-100) 所以我需要修改这个解决方案。
这是wa @jävi的解决方案:
$(document).ready(function(){
$('.danger').popover({
html : true,
content: function() {
return $('#popover_content_wrapper').html();
}
});
});
我的每个按钮都有自己的ID。
<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_div1" style="display: none">
<div>This is your div content</div>
</div>
<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_div2" style="display: none">
<div>This is your div content</div>
</div>
那么如何重写这个javascript代码片段来覆盖我的所有按钮呢?
答案 0 :(得分:13)
我自己就是为此奋斗。您需要将id放在触发弹出窗口的元素中。使用像这样的自定义数据属性(称为“data-id”):
<a class='danger' data-id="popover_div1" data-placement='above' title="Popover Title" href='#'>Click</a>
然后,您可以稍微修改您的javascript以编程方式获取data-id属性值:
$(document).ready(function(){
$('.danger').popover({
html : true,
content: function() {
return $($(this).attr('data-id')).html();
}
});
});
答案 1 :(得分:4)
如果您不想使用其他data-*
属性污染源元素,则可以使用data-content
属性作为文本或CSS选择器的简单通用方法:
$('[data-toggle="popover"]').popover({
html: true,
content: function() {
var content = $(this).data('content');
try { content = $(content).html() } catch(e) {/* Ignore */}
return content;
}
});
您现在可以将data-content
属性与文本值一起使用:
<a data-toggle="popover" data-title="Popover Title" data-content="Text from data-content attribute!" class="btn btn-large" href="#">Click to toggle popover</a>
...或使用带有CSS选择器值的data-content
属性:
<a data-toggle="popover" data-title="Popover Title" data-content="#countdown-popup" class="btn btn-large" href="#">Click to toggle popover</a>
<div id="countdown-popup" class="hide">Text from <code>#countdown-popup</code> element!</div>
您可以在此处测试此解决方案:http://jsfiddle.net/almeidap/eX2qd/
...或者在这里,如果您使用的是Bootstrap 3.0:http://jsfiddle.net/almeidap/UvEQd/(请注意data-content-target
属性名称!)
答案 2 :(得分:1)
您可以在没有其他按钮属性的情况下执行此操作:
http://jsfiddle.net/isherwood/E5Ly5/
.popper-content {
display: none;
}
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content">My first popover content goes here.</div>
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content">My second popover content goes here.</div>
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content">My third popover content goes here.</div>
$('.popper').popover({
container: 'body',
html: true,
content: function () {
return $(this).next('.pop-content').html();
}
});
答案 3 :(得分:0)
将包含popover html的div的id存储在a元素的rel属性中
<a rel="popover_div2" ... >click</a>
然后在你的点击监听器中获取click锚点的rel(不确定popover方法如何存储它,但我确信它确实如此):
var myRel = $(this).attr(rel);
return $(myRel).html();
答案 4 :(得分:0)
对我而言,它确实是
data-id="#popover_div1"
在按钮的HTML中(用#表示div的id)。