2016-06-25 61 views
0

我想使用Bootstrap Popover和ajax模板。接下来的脚本运行良好,...Bootstrap Popover失败,使用ajax

$('.popover-trigger').bind('click', function(k) { 

       var e=$(this); 
title="Jeepieee" 
       $.get('/popover/'+e.data('pophtml'),function(d) { 
        e.popover({ 
          content: d, 
          container: 'body', 
          title: title, 
          html: true 
         }).popover('show'); 
       }); 
}); 

...但是,如果我第一发送AjaxCall的开酥料饼,这是对的。我再次打开酥料饼,它向我展示了我的HTML,但是从酥料饼的HTML是旧的,而不是AJAX调用..

当我用$()。酥料饼(“摧毁”),然后我有没有点击事件在我的按钮,它什么也没有打开。

如果我有多个,会使事情变得更糟。

回答

1

通过AJAX在Bootstrap popover中加载内容是一种非常常见的模式,尽管Bootstrap不支持该模式,但通过jQuery获得此功能非常容易。

首先,我们应该添加一个数据poload属性到 想添加弹出的元素。该属性的内容应该是要加载的 URL(绝对或相对):

<a href="#" title="blabla" data-poload="/test.php">blabla</a> 

而在JavaScript中,优选在(文档)$。就绪();

$('*[data-poload]').hover(function() { 
    var e=$(this); 
    e.off('hover'); 
    $.get(e.data('poload'),function(d) { 
     e.popover({content: d}).popover('show'); 
    }); 
}); 

off('hover')防止超过一次加载数据越来越popover()结合 新悬停事件。如果您希望在每次悬停 事件时刷新数据,则应删除关闭。

请参阅工作JSFiddle的例子。

+0

不!通过悬停它正在运行,但不bei点击事件。我需要点击事件,因为我在弹出窗口中使用了一个窗体。 – Moo

+0

所以,只需将悬停事件更改为点击事件即可。请参阅演示:[JsFiddle](https://jsfiddle.net/DTcHh/22082/) –

+0

不!在选项html下设置为true,可以有更多的作为一个事件和$ get的同等响应,因为不稳定不稳定。 – Moo