我可以在Bootstrap popover中使用动态内容吗?

时间:2014-01-30 14:23:28

标签: javascript php jquery twitter-bootstrap popover

我在“重复区域”中使用Bootstrap Popover来显示推荐书。每个推荐都有一个“查看属性详细信息”按钮,可以打开弹出窗口。在Pop中我希望显示与每个推荐和图像细节相关联的图像。图像路径存储在数据库的一列中,以便显示我需要将图像源绑定到内容的每个推荐的图像,但它不接受PHP。我使用的脚本允许我将html写入内容,但需要动态创建图像。动态文本适用于'a'标记'标题'选项,但不适用于内容。

有人能说清楚这个吗?

这就是我所拥有的。

<script type="text/javascript">
 $(document).ready(function() {
  $("[rel=details]").popover({
  placement : 'bottom', //placement of the popover. also can use top, bottom, left or     right
  html: 'true', //needed to show html of course
  content : '<div id="popOverBox"><img src="<?php echo $row_rsTstmnlResults['image']; ?>"        width="251" height="201" /></div>' //this is the content of the html box. add the image here or anything you want really.
});
});
</script>
    <a href="#" rel="details" class="btn btn-small pull-right" data-toggle="popover"     title="<?php echo $row_rsTstmnlResults['property_name']; ?>" data-content="">View Property</a>

5 个答案:

答案 0 :(得分:17)

var popover = $("[rel=details]").popover({
    trigger: 'hover',
    placement: 'bottom',
    html: 'true'
}).on('show.bs.popover', function () {
    //I saw an answer here  with 'show.bs.modal' it is wrong, this is the correct, 
    //also you can use   'shown.bs.popover to take actions AFTER the popover shown in screen.
    $.ajax({
        url: 'data.php',
        success: function (html) {
            popover.attr('data-content', html);
        }
    });
});

答案 1 :(得分:4)

一岁:(但这可能有助于另一个人

删除你的js脚本并添加这个:

var content = $('[id*="yourDivId"]');
var title = "Your title, you can use a selector...";

$('[data-toggle="popover"]').popover({
    html: true,
    content: function () {
        return content.html();
    },
    title: function() {
      return title.html();
    }
});

答案 2 :(得分:2)

这是通用方法,但使用ASP.Net处理程序来处理图像。在PHP中使用类似的东西来动态生成图像

<script type="text/javascript">
 $(document).ready(function() {
  $("[rel=details]").popover({
  placement : 'bottom', //placement of the popover. also can use top, bottom, left or     right
  html: 'true', //needed to show html of course
  content : getPopoverContent(this)// hope this should be link
});
});

function getPopoverContent(this)
{
 return '<div id="popOverBox"><img src="/getImage.php?id="'+this.data("image-id")+' 
 width="251" height="201" /></div>'
}
</script>

<a href="#" rel="details" class="btn btn-small pull-right" 
data-toggle="popover"     data-image-id="5" data-content="">View Property</a>

答案 3 :(得分:1)

我的解决方案基于此处的先前解决方案,还有更多内容。 我需要(通常)所有复杂性: 这是在事件触发时按需创建弹出窗口内容的方法, 并将所选元素传递到创建函数。

function displayProductPrice(a, tag) {
    var div = a.closest('div');
    var secs = ['aggregated', 'compare', 'list', 'saved', 'details'];
    var title = '';
    for (var c in secs) {
        var obj = $('.product-price-' + secs[c], div);
        if (obj.length) {
            if (title) {
                title += '<br />';
            }
            title += obj.html();
        }
    }
    return '<' + tag + '>' + title + '</' + tag + '>';
}
$( document ).ready(function() {
  $(".product-price-expand").popover({
        content: function() {return displayProductPrice(this, 'h6')},
        title: function() {                
            return $('.product-id', this.closest('div')).html();
        },
        html: true,
        trigger: 'click focus',
        placement: 'auto'
    });
});

享受,希望对您有帮助。

答案 4 :(得分:0)

$("selector").popover({
        trigger : "manual",
        placement : 'right',
        html : true,
        template : '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
    }).popover("show");

    $.ajax({
        async : true,
        url : url,
        dataType : 'json',
        success : function(d) {
            $("#phover" + id).attr('data-original-title', d['heading']);
            $('.popover-title').html(d['heading']);
            $('.popover-content').html(d['body']);
        },
        beforeSend : function() {
            var loadingimage = '<div align="center"><img src="assets/pre-loader/Whirlpool.gif"></div>';
            $('.popover-title').html(loadingimage);
            $('.popover-content').html(loadingimage);
        }
    });