この質問に似た他のすべての回答を見てきましたが、私のシナリオに合わせることができません。
自動更新される 15 の結果を含むサイドバーがあるページがありますが、これで問題ありません。外部ページをオーバーレイ付きの div にロードするリンクがあります。次に、結果の完全なリストを備えたこの新しいdiv
ものも、開いている間に自動更新されます。(両方の div が不必要にバックグラウンドで自動更新されないようにします)
このfull list
div では、各結果にjquery slideToggle()
詳細情報を表示する機能があります。
私がしようとしている(そして失敗している)のは、これslideToggle
が情報を表示している間、自動更新を停止させることdisplay:none
です。
これが私の最新の試みです:
html
main page has div to load into...
<div id="full_list"> loading... </div>
完全なリストを含む外部ページ
<div class="events_list"> <!--container for events -->
<ul><li>
<div class="full_event"> <!--each event in a list-->
#1<b> 500 m race </b> <!--this bit always seen -->
<div class="event_slide"> <!--this div is slideToggled() -->
<b>500m race </b><br>
<div class="evntdescription">
run 500mrun 500mrun 500mrun 500mrun 500mrun 500m
</div>
</div>
</div>
</li></ul>
</div>
今私の試みたjavascript
var refreshData;
var infodisplay = $('.event_slide').css('display');
function autoRefresh () {
if(infodisplay == 'none')
{
refreshData = setInterval(function() {
$('#full_list').load('eventlist.php');
}, 1000);
}
else
{
clearInterval(refreshData);
}
};
$("#view_events").click(function(){ //this opens up the div //
overlay.fadeIn(1000).appendTo(document.body);
$('#full_list').load('eventlist.php'); //loads external page//
$('#full_list').fadeIn(800, function() {
autoRefresh (); //start the auto refresh/
$("body").on("click",".full_event", function(e){
$(this).children('div.event_slide').slideToggle(300, function() {
autoRefresh (); //thought it might work if i add the function
//here as well //
});
});
});
$("body").on("click","#close", function(e){ //closes div//
overlay.fadeOut(300);
$("#full_list").fadeOut(300);
});
return false;
});
基本的に何もしません。2 番目autoRefresh
の関数を削除しても機能するようになりましたが、機能が停止することはありません。更新を続けるだけで、divを閉じたときに更新を停止する方法もわかりません。さらに情報が必要な場合はお知らせください。
ありがとう!