サイドバーでTwitterBootstrapのポップオーバー機能を使用しています。サイドバーがフェッチされ、30秒ごとにコンテンツがリロードされます。stats.phpというファイルをフェッチして、サイドバーのコンテンツをリロードするためにXMLHttpRequestを訴えています。
次のコードは、ページのヘッダーにある「更新」コードです。
function onIndexLoad()
{
setInterval(onTimerCallback, 30000);
}
function onTimerCallback()
{
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
if (request.readyState == 4 && request.status == 200)
{
document.getElementById("stats").style.opacity = 0;
setTimeout(function() {
document.getElementById("stats").innerHTML = request.responseText;
document.getElementById("stats").style.opacity = 100;
}, 1000);
}
}
request.open("GET", "stats.php", true);
request.send();
}
上記のコードは問題なく機能しますが、#stats divをリロードした後、ポップオーバーは本来の機能を実行しなくなります-ポップアップ。
サイドバーに複数のポップオーバーがあるため、必要な複数のポップオーバースクリプトがあるため、ポップオーバーコードはforeach()ループのstats.phpにあります。
これが私のポップオーバーコードです:
$(document).ready(function() {
$('a[rel=popover_$id]').popover({
placement:'right',
title:'$title',
content: $('#popover_content_$id').html()
});
});
$id
とは$title
foreach()ループから取得されるため、動的です。
divがリロードされた後、ポップオーバー関数が再初期化されるようにするにはどうすればよいですか?
$("a[rel=popover_controller_$cid]").on({
mouseenter: function () {
$('a[rel=popover_$id]').popover({
placement:'right',
title:'$title',
content: $('#popover_content_$id').html()
});
}
});
私も試しました:
$("a[rel=popover_controller_$cid]").on("mouseover", function () {
$('a[rel=popover_$id]').popover({
placement:'right',
title:'$title',
content: $('#popover_content_$id').html()
});
});