Опубликовать событие при загрузке страницы, когда все решено

0

Хорошо, есть странная проблема со страницей, которую у меня есть.

Когда страница сначала загружается, div я не хочу видеть, скрыт. Но через несколько секунд div снова включается. Когда я нажимаю ссылку на главную страницу, div я не хочу видеть, скрыт, наконец.

Я хочу написать сценарий, как событие POST в старом PowerBuilder, где, когда все сказано и сделано, 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 id="otherPageContent" class="hidden">
      <div id="pgDashboard" class="hidden"></div>
      <div id="pgThresholdConfigurationPH" class="hidden"></div>
      <div id="pgCoreSettingsMaintenancePagePH" class="hidden"></div>
    </div>
  • 3
    Возможно, вам следует опубликовать разделы кода, относящиеся к элементам div, которые вы скрываете и показываете, чтобы люди могли вам помочь.
  • 1
    ПОЧЕМУ вы случайно КАПИТИЛИРУЕТЕ одни СЛОВА и оставляете другие МАЛЕНЬКИМИ? Видишь как странно это выглядит?
Показать ещё 5 комментариев
Теги:

3 ответа

1
Лучший ответ

Используйте setInterval() для загрузки тела. Это может помочь вам получить некоторый интервал времени после загрузки страницы.

Предпочтительно использовать setTimeout(). Он будет вызывать вашу функцию один раз, где вы можете скрыть ur divs, указав временной интервал.

  • 1
    почему не setTimeout ()?
  • 0
    Да, setTimeout () будет хорошим. Вместо того, чтобы вызывать функцию снова и снова через setInterval, мы должны вызвать ее один раз
Показать ещё 3 комментария
1

Вы пытались использовать функцию .ready()?

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

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

Мне также кажется, что если вам нужно, чтобы таймер ожидал, когда ваш javascript завершит работу, чтобы вернуть html обратно к тому, как вы этого хотите, порядок, в котором ваш код запускается при запуске, неверен. возможно, переосмыслить и переупорядочить так, чтобы после начальной загрузки ваши элементы html находились в правильном состоянии.

0

Почему бы не дать тегам DIV атрибут класса, а затем применить стиль CSS в {display:none;}?

  • 0
    .hidden и .shown - это атрибуты класса, которые я создал для этой цели ... спасибо за комментарий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню