2015-09-22 2 views
0

Проблема, с которой я столкнулась, заключается в том, что после некоторых щелчков мыши на моей консоли я сначала вижу это сообщение «Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для и после этого всякий раз, когда я нажимаю на элемент mainMenu, моя страница по умолчанию ajax, относящаяся к этому, не открывается, и я также вижу эту ошибку в консоли «Uncaught Error: не может вызывать методы на аккордеоне до инициализации, попытался вызвать метод», опция '». Я как бы потерялся в этой проблеме и не понял, что происходит.My jquery ui accordion перестает загружать страницы ajax после определенного количества кликов

Вот моя JQuery часть: -

$(".accordion").accordion({collapsible:true, active:0, heightStyle: "content"}); 


    $("#protocolParameters").load("generalSystemStatus.html"); 


    $(document).on("click",".outerMenuItem",function(){ 

     var currentlyActive=$(".accordion").accordion("option", "active"); 
     console.log("Current tab no. "+currentlyActive); 

     if(currentlyActive===0){ 

      $("#protocolParameters").load("generalSystemStatus.html"); 


     } 
     else if(currentlyActive===1){ 


      $("#protocolParameters").load("networkEthernet.html"); 


     } 

     else if(currentlyActive===2){ 


      $("#protocolParameters").load("ntpDaemonStatus.html"); 

     } 

     else if(currentlyActive===3){ 


      $("#protocolParameters").load("ptpMaster.html"); 

     } 

     else if(currentlyActive===4){ 


      $("#protocolParameters").load("timingHardwareClockConfig.html"); 

     } 

     else if(currentlyActive===5){    

      $("#protocolParameters").load("system.html"); 

     } 

     else if(currentlyActive===6){ 


      $("#protocolParameters").load("adminAlarm.html"); 


     } 

     else { 

      $("#protocolParameters").load("/404.html .someError"); 

     } 

    }); 

    $(".outerMenuItem").click(function(){ 
     if($(this).text()==="SYSTEM"){ 
      console.log("System Clicked"); 
      $("#protocolParameters").load("system.html"); 
     } 
    }); 

    $(".innerMenuItem").click(function() { 
     $(".innerMenuItem").removeClass("innerMenuItemOnClick"); 
     $(this).addClass("innerMenuItemOnClick"); 
     if ($(this).text() === "General") { 

      $("#protocolParameters").load("generalSystemStatus.html"); 

     } 
     else if ($(this).text() === "Networks") { 

      $("#protocolParameters").load("networkStatus.html"); 

     } 
     else if ($(this).text() === "Timing") { 

      $("#protocolParameters").load("timingStatus.html"); 

     } 
     else if ($(this).text() === "GNSS") { 

      $("#protocolParameters").load("gpsStatus.html"); 

     } 
     else if ($(this).text() === "PTP") { 

      $("#protocolParameters").load("ptpStatus.html"); 

     } 
     else if ($(this).text() === "Alarms") { 

      $("#protocolParameters").load("alarmStatus.html"); 

     } 
     else if ($(this).text() === "Ethernet") { 


      $("#protocolParameters").load("networkEthernet.html"); 

     } 
     else if ($(this).text() === "SNMP") { 


      $("#protocolParameters").load("networkSnmp.html"); 

     } 

     else if($(this).text()=== "NTP Daemon Status"){ 


      $("#protocolParameters").load("ntpDaemonStatus.html"); 

     } 

     else if($(this).text()=== "PTP Master"){ 

      $("#protocolParameters").load("ptpMaster.html"); 

     } 

     else if($(this).text()=== "PTP Slaves"){ 


      $("#protocolParameters").load("ptpSlave.html"); 

     } 

     else if($(this).text() === "Hardware Clock Configuration"){ 


      $("#protocolParameters").load("timingHardwareClockConfig.html"); 

     } 

     else if($(this).text() === "Holdover"){ 


      $("#protocolParameters").load("timingHoldover.html"); 

     } 

     else if($(this).text() === "System"){ 


      $("#protocolParameters").load("system.html"); 

     } 

     else if($(this).text()=== "Alarm"){ 


      $("#protocolParameters").load("adminAlarm.html"); 

     } 

     else if($(this).text()=== "Logging"){ 


      $("#protocolParameters").load("adminLogging.html"); 

     } 

     else if($(this).text()=== "Web Interface"){ 

      $("#protocolParameters").load("adminWebInterface.html"); 

     } 

     else if($(this).text()=== "User Management"){ 


      $("#protocolParameters").load("adminUserManagement.html"); 

     } 

     else{ 

      $("#protocolParameters").load("/404.html .someError"); 

     } 

    }); 

Вот мой HTML часть:

<div class="accordion"> 
    <h3 class="outerMenuItem"><div class="systemStatusNormal"></div>STATUS</h3> 
    <ul class="submenu"> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">General</a></li> 
     <li><a class="innerMenuItem" href="#!">Networks</a></li> 
     <li><a class="innerMenuItem" href="#!">Timing</a></li> 
     <li><a class="innerMenuItem" href="#!">GNSS</a></li> 
     <li><a class="innerMenuItem" href="#!">PTP</a></li> 
     <li><a class="innerMenuItem" href="#!">Alarms</a></li> 
    </ul> 
    <h3 class="outerMenuItem"><div class="systemStatusNormal"></div>NETWORK</h3> 
    <ul class="submenu" id="networkSubmenu"> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">Ethernet</a></li> 
     <li><a class="innerMenuItem" href="#!">SNMP</a></li> 
    </ul> 

    <h3 class="outerMenuItem" ><div class="systemStatusRisk"></div>NTP</h3> 
    <ul> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">NTP Daemon Status</a> </li> 
    </ul> 

    <h3 class="outerMenuItem"><div class="systemStatusWarning"></div>PTP Management</h3> 
    <ul> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">PTP Master</a> </li> 
     <li><a class="innerMenuItem" href="#!">PTP Slaves</a> </li> 
    </ul> 

    <h3 class="outerMenuItem"><div class="systemStatusNormal"></div>TIMING</h3> 
    <ul> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">Hardware Clock Configuration</a> </li> 
     <li><a class="innerMenuItem" href="#!">Holdover</a> </li> 
    </ul> 


    <h3 class="outerMenuItem innerMenuItem"><div class="systemStatusNormal"></div>SYSTEM</h3> 
    <ul> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">System</a></li> 
    </ul> 

    <h3 class="outerMenuItem"><div class="systemStatusNormal"></div>ADMIN</h3> 
    <ul> 
     <li><a class="innerMenuItem innerMenuItemOnClick" href="#!">Alarm</a></li> 
     <li><a class="innerMenuItem" href="#!">Logging</a></li> 
     <li><a class="innerMenuItem" href="#!">Web Interface</a></li> 
     <li><a class="innerMenuItem" href="#!">User Management</a></li> 
    </ul> 

</div> 

А вот CSS: -

#sidebarElementDivPicture{ 
height:152px; 
} 

a{ 
    color: #3f3f4e; 
    font-weight: bold; 
    padding-left:15px; 
} 

a.innerMenuItem{ 
    color: #363545; 
} 

a.innerMenuItemOnClick{ 
    color:#eb5e13 !important; 
} 

.accordion .ui-icon{ 
    display:none; 
} 

.accordion .ui-accordion-header{ 
    height:30px; 
    position: relative; 
    z-index: 3; 
    width:200px; 
    } 

    .accordion .ui-accordion-header:hover{ 
    color:#eb5e13; 
    } 

    .accordion .ui-accordion-header .ui-state-active{ 
     color:#eb5e13; 
    } 

    .accordion .ui-accordion-content { 
     position: relative; 
     z-index: 6; 
     width:180px; 
     color:#eb5e13; 
    } 

    .accordion .ui-accordion-header:active{ 
     color:#eb5e13; 
     } 

     #sidebar{ 
      float:left; 
      padding-left:200px !important; 
      padding-top: 22px; 
     } 
+0

есть ли код ajax внутри любого из этих html-файлов? – charlietfl

+0

Да, в некоторых из них есть потому, что я использую формы там, и я отправляю их с помощью ajax. –

+0

Тогда один или несколько из них установлены в 'async: false', о чем идет предупреждение. Это всегда была плохая практика, так как она блокирует пользовательский интерфейс и теперь устарела. – charlietfl

ответ

1

Наконец получил это исправлено. Проблема была не в коде аккордеона. Проблема заключалась в том, каким образом я звоню теги сценария для Jquery и Jquery ссылки Ui т.е.

<script type="text/javascript" src="/js/jquery.min.js"></script> 
<script type="text/javascript" src="/js/jquery-ui/jquery-ui.min.js"></script> 

В некоторых из моих файлов, которые я звоню через AJAX, некоторые из них были эти сценарии, и в результате там было переключатель в контексте приложения. Я удалил эти теги из этих файлов и удостоверился, что только моя главная страница с аккордеоном имеет эти теги. Теперь он отлично работает

 Смежные вопросы

  • Нет связанных вопросов^_^