Twitter bootstrap Twitter bootstrap js popover内容没有';当数据内容属性更新时不更新

Twitter bootstrap Twitter bootstrap js popover内容没有';当数据内容属性更新时不更新,twitter-bootstrap,Twitter Bootstrap,我正在使用一个弹出窗口来显示一些在ajax请求后更新的信息。基本上,我正在更新元素的数据内容属性,该元素在悬停时触发popover。我正在检查dom,数据内容肯定在更新,但popover的内容保持不变。我一直在尝试我能想到的一切,我开始觉得我错过了一些简单的东西。有人能帮帮我吗。她的一些代码: <ul> <li class="player_name_li" rel="popover" data-placement="right" data-html="true"

我正在使用一个弹出窗口来显示一些在ajax请求后更新的信息。基本上,我正在更新元素的数据内容属性,该元素在悬停时触发popover。我正在检查dom,数据内容肯定在更新,但popover的内容保持不变。我一直在尝试我能想到的一切,我开始觉得我错过了一些简单的东西。有人能帮帮我吗。她的一些代码:

<ul>
   <li class="player_name_li" rel="popover" data-placement="right"
    data-html="true" data-title="Dude" data-trigger="hover"
    data-content="<div class='custom_content'>Heres some content</div>" 
   data-original-title="" title=""><span class="player_name">Dude</span>
   </li>
</ul>
  • 都德
然后是我的剧本

$(document).ready(function(){
$('.player_name_li').popover({
     template: '<div class="popover" style="width:250px;"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'});

setInterval(function(){update_scores();}, 6000);

function update_scores()
{
    $.ajax({
        url: HOST_NAME,
        type: 'POST',
        //async: false,
        data: {player_array: my_data_is_generated_from_page)}
    }).done(function(results){
        var obj = $.parseJSON(results);     
        //this reloads the stupid popover data
        $.each(obj.fancy_return, function(index, value){
        $('.player_info_link').each(function(){             
            var huh = $(this).closest('li');
            huh.attr('data-content', value.new_table);
                });
        )};
}
$(文档).ready(函数(){
$('.player\u name\u li').popover({
模板:'

'}); setInterval(函数(){update_scores();},6000); 函数更新_分数() { $.ajax({ url:主机名, 键入:“POST”, //async:false, 数据:{player_数组:我的_数据_是从_页面生成的)} }).完成(功能(结果){ var obj=$.parseJSON(结果); //这将重新加载愚蠢的popover数据 $.each(obj.u返回,函数(索引,值){ $('.player\u info\u link')。每个(函数(){ var huh=$(this.nextest('li'); huh.attr('data-content',value.new_表); }); )}; }

现在就像我说的那样,所有这些都按照我的预期工作,并通过检查dom来更新每个popover li的数据内容,但当我将鼠标悬停在li上时,它仍然显示数据内容的旧内容。我浏览了一些帖子,并尝试在我的popover实例中使用
content:fun按函数设置内容Action(){return$(this.data('content');}
也一样,但这不起作用。我也尝试过销毁和重新创建每个有效的元素,但由于它在一个间隔函数中并自动启动,如果打开了一个popover,它会关闭一个打开的popover,这使它看起来有问题。有什么想法吗?

正确的方法是提供
内容:函数(){return someDynamicContent}
,如您所述。我看到您可能遇到的唯一问题是,您可能不知道
$('.player\u name\u li')。数据('content')
不会自动与
$('.player\u name\u li').attr('data-content')的操作保持同步
。您需要确保在AJAX回调中更改的内容与在
内容的定义中引用的内容相同

如果你定义

$('.player_name_li')
  .popover({
    template: '<div class="popover" style="width:250px;"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>',
    content: function (){return $(this).data('content')}
  })

如果你这样做,插件将在幕后进行所有的重新初始化。

只是问,因为我在你的代码中没有看到它-你在更新内容后是否重新初始化每个popover?@AdamD ya我正在重新初始化它们,但它不起作用,所以我尝试销毁它们并重新创建。很抱歉,我被抓到了在其他项目上。我会在有机会的时候测试这个解决方案。看起来我没有按照你说的去做,这可能是解决方案,所以值得一试。是的。这就成功了。事实上,我删除了页面加载时的初始化,只是让函数在间隔内以同样的方式覆盖它。但从概念上讲,它是相同的解决方案。比ks!
huh.data('content', value.new_table);