12

此解决方案适用于单按钮情况:Is it possible to use a div as content for Twitter's Popover

但是在我的页面中,我有一堆弹出框(比如 50-100)。
所以我需要修改这个解决方案。

这是@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 代码片段来覆盖我的所有按钮呢?

4

5 回答 5

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();
    }
  });
});
于 2012-07-25T22:39:31.273 回答
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>

...或使用data-content带有 CSS 选择器值的属性:

<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属性名称!)

于 2013-05-19T18:57:03.840 回答
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();
    }
});
于 2014-02-07T21:50:26.777 回答
0

将包含 popover html 的 div 的 id 存储在 a 元素的 rel 属性中

<a rel="popover_div2" ... >click</a>

然后在单击侦听器中获取单击锚点的 rel (不确定 popover 方法如何存储它,但我确定确实如此):

var myRel = $(this).attr(rel);
return $(myRel).html();
于 2012-07-05T17:12:16.390 回答
0

对我来说确实是

data-id="#popover_div1" 

在按钮的 HTML 中(带有 # 用于寻址 div 的 id)。

于 2013-03-03T11:01:29.143 回答