1

ユーザーに表示される 10 秒ごとに yii GridView テーブルを更新する JavaScript コードを作成しましたが、これは正常に動作しています。

timedRefresh($page_refresh_time);
function timedRefresh(timeoutPeriod) {
     setTimeout(function(){refreshGrid()}, timeoutPeriod);
}

function refreshGrid() {
   $.fn.yiiGridView.update(\"group-grid\");
   timedRefresh($page_refresh_time);

}

しかし、タブが表示されているときにのみテーブルが更新され、残りの時間テーブルは更新されないようにコードを変更したいと考えています。だから私は自分のコードを次のように変更しました:

timedRefresh($page_refresh_time);
function timedRefresh(timeoutPeriod) {
     setTimeout(function(){refreshGrid()}, timeoutPeriod);
}

function refreshGrid() {
   $('a[href=\"#dash2\"]').on('shown', function(e) {
        $.fn.yiiGridView.update(\"group-grid\");
        timedRefresh($page_refresh_time);
   });
}

dash2タブのIDはどこにありますか。今の問題は、コードを更新した後、10秒ごとにテーブルの更新が機能しなくなったことです。上記のJavaScriptコードでどこが間違っているのか、誰か教えてもらえますか?

また、タブを閉じるとテーブルの更新を停止したい。どうすればこれを達成できますか?

4

1 に答える 1

0

'shown'は有効な jQuery イベントではありません。とにかく、on()このシナリオでの の使用は間違っています。

上記のコードを次のように変更します。

function refreshGrid() {
   if($("a[href='#dash2']").is(':visible')) {
        $.fn.yiiGridView.update(\"group-grid\");
   }
}
var interval = setInterval(refreshGrid, $page_refresh_time);

更新をキャンセルする必要がある場合は、

if(interval) clearInterval(interval);
于 2013-10-11T07:13:00.207 に答える