一切都结算后,在页面加载时发布事件

时间:2013-12-16 12:37:40

标签: javascript jquery

好吧,我的页面有一个奇怪的问题。

首次加载页面时,我不想看到的div被隐藏。但几秒钟后,div又重新开启。当我点击主页面的链接时,最终隐藏了我不想看的div

我想编写一个脚本,就像旧的PowerBuilder中的POST事件一样,当所有事情都说完了,div我不想看,最后被隐藏。

我有1000行代码,搜索速度非常慢。

我只需要一个确保我不想看到div的事件,保持隐藏状态。

以下是代码:

function hideChildDivs(parent) {
    parent.children('div').removeClass('shown').addClass('hidden');
}

function changePage(id, pageName, title, icon) {
    switch (pageName) {
    case 'treeview':
        hideChildDivs($("#otherPageContent"));
        showOnlyActivatedPanel('none');
        $('#otherPageContent').removeClass('shown').addClass('hidden'); //<!-- This is the container wrapper... see below. -->
        $("#pgCoreSettingsMaintenance").removeClass('shown').addClass('hidden'); //<!-- This element needs to remain hidden when the dashboard shows -->
        $("#contentDivWrapper").removeClass("hidden").addClass("shown");
        $("#dash").removeClass();
        $("#tree").removeClass();
        $("#thres").removeClass();
        $('#mainContentPane h1 > i').removeClass().addClass(icon);
        $("#pgDashboard").addClass("hidden").removeClass("shown");
        $('#headerTitleTree').html(title);
        $("#headerTitleRow").removeClass('hidden');
        $("#headerTitleRow").addClass('shown');
        $("#" + id).addClass("active");
        $("#dash").removeClass("active");
        $("#thres").removeClass("active");

        break;

    case 'dashboard':  //<!-- this is the first div that is displayed on startup -->
        hideChildDivs($("#otherPageContent"));
        showOnlyActivatedPanel('none');
        preLoader = false;
        $("#contentDivWrapper").removeClass("shown").addClass("hidden");
        $('#headerTitleTree').html(title);
        $("#headerTitleRow").removeClass('hidden');
        $("#headerTitleRow").addClass('shown');
        $("#dash").removeClass();
        $("#tree").removeClass();
        $("#thres").removeClass();
        $("#pgDashboard").addClass("shown");
        $("#pgDashboard").removeClass("hidden");
        $('#mainContentPane h1 > i').removeClass().addClass(icon);
        $("#" + id).addClass("active");
        $("#tree").removeClass("active");
        $("#thres").removeClass("active");
        $('#otherPageContent').removeClass('hidden').addClass('shown');
        $("#pgDashboard").removeClass('hidden').addClass('shown');
        $("#pgCoreSettingsMaintenance").removeClass('shown').addClass('hidden');
        loadPageIntoDiv("web-resources/templates/" + pageName + ".html");
        getKPIs(myUrl, myCallback);

        break;

    case 'threshold':
        hideChildDivs($("#otherPageContent"));
        showOnlyActivatedPanel('none');
        $('#mainContentPane h1 > i').removeClass().addClass(icon);
        $("#contentDivWrapper").removeClass("shown").addClass("hidden");
        $('#headerTitleTree').html(title);
        $("#headerTitleRow").removeClass('hidden');
        $("#headerTitleRow").addClass('shown');
        $("#" + id).addClass("active");
        $("#tree").removeClass("active");
        $("#dash").removeClass("active");
        $("#pgDashboard").removeClass("shown").addClass("hidden");
        $('#otherPageContent').removeClass('hidden').addClass('shown');
        $("#pgCoreSettingsMaintenance").removeClass('hidden').addClass('shown'); //<!-- this element needs to remain hidden when the dashboard shows. -->
        break;

    }
}

这里是按顺序的div ...

    <div id="otherPageContent" class="hidden">
      <div id="pgDashboard" class="hidden"></div>
      <div id="pgThresholdConfigurationPH" class="hidden"></div>
      <div id="pgCoreSettingsMaintenancePagePH" class="hidden"></div>
    </div>

3 个答案:

答案 0 :(得分:1)

在正文载入上使用setInterval()。它可能会帮助您在页面加载后获得一些时间间隔。

最好使用setTimeout()。它会调用你的函数一次,你可以通过给出一个时间间隔隐藏你的div。

答案 1 :(得分:1)

您是否尝试使用.ready()功能?

http://api.jquery.com/ready/

$( document ).ready(function() {
  changePage('','dashboard','','');
});

在我看来,如果你需要一个等待javascript完成运行的计时器,以便将html设置回你想要的状态,那么你的代码在启动时运行的顺序是不对的。也许有一个重新思考和重新排序,以便在初始加载后你的html元素处于正确的状态。

答案 2 :(得分:0)

为什么不给DIV标签一个类属性然后应用{display:none;}的CSS样式?