使用自定义html模板制作bootstrap popover

时间:2014-07-04 20:05:29

标签: jquery html css twitter-bootstrap-3

我正在使用输入组文本框,我需要Bootstrap 3 popover才能工作,弹出模板应该由我设计并定义。 所以我目前和我在一起的HTML是:

<div class="row">
        <div class="col-sm-2">
            <div class="input-group">
                <input type="text" class="form-control jq-timePicker" value="09:30">
                <span class="input-group-addon" rel="popover">
                    <span class="glyphicon glyphicon-time"></span>
                </span>
            </div>
        </div>
</div>

我希望在单击输入组图标时打开弹出窗口。在这种情况下,当单击带有glyphicon-time类的span时,将使用以下HTML显示或使用以下HTML显示:

<div class="timePickerWrapper popover">
            <div class="arrow"></div>
            <div class="popover-content">
                <div class="timePickerCanvas"></div>
                <div class="timePickerClock timePickerHours"></div>
                <div class="timePickerClock timePickerMinutes"></div>
            </div>
        </div>

JS写道:

$(document).ready(function () {
    var popoverTemplate = ['<div class="timePickerWrapper popover">',
        '<div class="arrow"></div>',
        '<div class="popover-content">',
        '<div class="timePickerCanvas"></div>',
        '<div class="timePickerClock timePickerHours"></div>',
        '<div class="timePickerClock timePickerMinutes"></div>',
        '</div>',
        '</div>'].join('');


    $('body').popover({
        selector: '[rel=popover]',
        trigger: 'click',
        template: popoverTemplate,
        placement: "bottom",
        html: true
    });
});

请参阅此处的小提琴:http://www.bootply.com/4fMzxGRpik

任何人都可以帮我纠正我正在做的错误以及需要做些什么来展示popvhover。

4 个答案:

答案 0 :(得分:21)

你错过了popover的内容,你需要这样的东西

$(document).ready(function () {
    var popoverTemplate = ['<div class="timePickerWrapper popover">',
        '<div class="arrow"></div>',
        '<div class="popover-content">',
        '</div>',
        '</div>'].join('');

    var content = ['<div class="timePickerCanvas">asfaf asfsadf</div>',
        '<div class="timePickerClock timePickerHours">asdf asdfasf</div>',
        '<div class="timePickerClock timePickerMinutes"> asfa </div>', ].join('');


    $('body').popover({
        selector: '[rel=popover]',
        trigger: 'click',
        content: content,
        template: popoverTemplate,
        placement: "bottom",
        html: true
    });
});

Working demo

答案 1 :(得分:2)

我希望模板中包含所有HTML。它是这样的:

使用Java脚本

$(".btn").popover({
   template: $("#selector").html(),
   placement: "auto"
});

以HTML

<div id="selector">
    Anything you want in your popovers, either dynamic or static
<div>

答案 2 :(得分:1)

@ code-jaff这是一个很好的答案,但我注意到工作演示的弹出窗口看起来不像是从按钮出来了。如果发生在其他任何人身上,请尝试添加容器:&#39; body&#39;到popover选项。像这样:

$('body').popover({
    selector: '[rel=popover]',
    trigger: 'click',
    content: content,
    template: popoverTemplate,
    placement: "bottom",
    html: true,
    container: 'body'
});

答案 3 :(得分:0)

我想尝试的是最小配置,不想将代码拆分成JS和HTML,这是我的解决方案。

这是我发现的,

引导程序版本 4.5.2 添加popper js

将您的代码放在 data-content 属性中。

这是我的 HTML 代码

<a tabindex="0" html="true" class="btn btn-sm" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And heres some <b>amazing content</b>. Its very engaging. Right?">Dismissible popover</a>

这是我的JS代码

 $('[data-toggle="popover"]').popover({
    html : true
 });