Twitter Bootsrap:Popover和Auto Refresh

Dut*_*fee 5 javascript jquery twitter-bootstrap

我正在使用Twitter Boostrap重新设计网站,我需要一些jQuery帮助.我正在使用与引导程序打包在一起的'Popover'附加组件,我将它放在#div标记中(#onlinedata是特定的),并且我使用jquery每10秒重新加载一次div.这很好,但是,如果你碰巧悬停在div刷新时激活popover的链接,那么popover就会卡住.

我正在使用此代码进行刷新:

setInterval(function(){
        $("#onlinedata").load("http://website.com #onlinedata");
}, 10000);
Run Code Online (Sandbox Code Playgroud)

如果需要,激活popover的代码:

$(function () {
        $('a[rel=popover]').popover({
            placement:'right',
            title:'Title',
            content: $('#div-that-contains-data').html()
        });
});
Run Code Online (Sandbox Code Playgroud)

当div重新加载时,有没有办法避免弹出窗口被卡住?

任何帮助是极大的赞赏.


相关的HTML

$id是每个弹出窗口的特定键,因为我有多个弹出窗口.

popover_controller悬停之前隐藏的弹出部分:

<div id="controller_popup_$id" style="display:none;">
   <div style="font-size:11px">
       //data_fetched_from_database
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

触发弹出窗口的链接

<li><a href="#" rel="popover_controller_$id">Link Title</a></li>
Run Code Online (Sandbox Code Playgroud)

最后,我正在使用的当前javascript(它通过数据库记录循环,因此每条记录获取以下javascript):

$(function () {
    $('a[rel=popover_controller_$id]').popover({
          placement:'right',
          title:'Title (this is fetched from the database for each popover)',
          content: $('#controller_popup_$id).html()
    });
});
$(document).ready(function() {
    // refreshing code
    setInterval(function() {
        $('#controller_popup_$id').hide(); // close any open popovers
        // fetch new html
        $('#onlinedata').load('http://website-link.com #onlinedata', function() {
            // after load, set up new popovers
            $('a[rel=popover_controller_$id]').popover({
                placement:'right',
                title:'Title (this is fetched from the database for each popover)',
                content: $('#controller_popup_$id').html()
            });
        });
    }, 10000); // 10 second wait
});
Run Code Online (Sandbox Code Playgroud)

**新代码女巫半工程**

我正在使用以下代码进行半工作.我遇到的唯一问题是在重新加载#onlinedata div之后,它会增加popover链接.

$(document).ready(function() {
        $('a[rel=popover_controller_$id]').popover({
            placement:'right',
            title:'Title',
            content: $('#controller_popup_$id').html()
        });
        // refreshing code
        setInterval(function() {
            // fetch new html
            $('a[rel=popover_controller_$id]').load('http://websiteurl.com/ #onlinedata', function() {

                $('a[rel=popover_controller_$id]').popover('destroy'); // remove old popovers
                // after load, set up new popovers
                $('a[rel=popover_controller_$id]').popover({
                    placement:'right',
                    title:'Title',
                    content: $('#controller_popup_$id').html()
                });

            });
        }, 10000); // 10 second wait
});
Run Code Online (Sandbox Code Playgroud)

Owl*_*ark 0

就像这个答案一样,我认为您需要将插件重新应用到已load编辑的新 DOM 元素上。popover这实际上意味着在调用后添加代码的副本load。如果旧的爆米花挂在周围,您可能必须将它们隐藏起来。这给了我们:

$(document).ready(function() {
    // refreshing code
    setInterval(function() {
        $('a[rel=popover]').popover('destroy'); // remove old popovers
        // fetch new html
        $('#onlinedata').load('/onlinedata.html #onlinedata', function() {
            // after load, set up new popovers
            $('a[rel=popover]').popover({
                placement:'right',
                content: $('#div-that-contains-data').html()
            });
        });
    }, 10000); // 10 second wait
});
Run Code Online (Sandbox Code Playgroud)