【问题标题】:jQuery Yii Update Data Table, Only if Tab is ShownjQuery Yii 更新数据表,仅当 Tab 显示时
【发布时间】:2013-10-11 06:53:56
【问题描述】:

我编写了一个 JavaScript 代码,每 10 秒向用户显示一次更新 yii GridView 表,效果很好。

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 代码中哪里出错了?

我还希望表格在标签关闭后停止刷新。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery gridview yii tabs


    【解决方案1】:

    '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);
    

    【讨论】:

    • 感谢 Samuel 的解决方案并更新了我关于“显示”的知识,因为我是 jquery、javascript 的新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多