ウェブサイトの再設計でTwitterBoostrapを使用していますが、jQueryのヘルプが必要です。ブートストラップにパッケージ化されている「Popover」アドオンを使用しており、それを#divタグ(具体的には#onlinedata)に入れており、jqueryを使用して10秒ごとにdivをリロードしています。これは正常に機能しますが、divが更新されたときにポップオーバーをアクティブにするリンクにカーソルを合わせると、ポップオーバーがスタックします。
私はこのコードを更新に使用しています:
setInterval(function(){
$("#onlinedata").load("http://website.com #onlinedata");
}, 10000);
そして、必要に応じて、ポップオーバーをアクティブにするコード:
$(function () {
$('a[rel=popover]').popover({
placement:'right',
title:'Title',
content: $('#div-that-contains-data').html()
});
});
divがリロードされたときにポップオーバーが開いたままになるのを防ぐ方法はありますか?
どんな助けでも大歓迎です。
関連するHTML
私は複数のポップオーバーを持っているので、これ$id
は各ポップオーバーに固有のキーです。
がホバーされるまで非表示になっているポップオーバー部分popover_controller
:
<div id="controller_popup_$id" style="display:none;">
<div style="font-size:11px">
//data_fetched_from_database
</div>
</div>
ポップオーバーをトリガーするリンク
<li><a href="#" rel="popover_controller_$id">Link Title</a></li>
そして最後に、私が使用している現在の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
});
**新しいコードウィッチセミワークス**
私は半ば機能する次のコードを使用しています。私が抱えている唯一の問題は、#onlinedata divをリロードした後、ポップオーバーリンクを乗算することです。
$(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
});