2015-01-09 3 views
0

Я создаю навигацию на своем сайте. Навигация работает хорошо, но когда я вернусь на основной сайт, весь скрипт из js-файла не работает. Сценарий для моей нав:JS-скрипт не работает, когда я нажимаю на нем

var default_content=""; 
$(document).ready(function(){ 
//Ajax navigate 
checkURL(); 
$('footer a').click(function(){ 
     checkURL(this.hash); 
}); 
default_content = $('#login_box').html(); 
setInterval("checkURL()",250); 
......... 

Методы:

var lasturl=""; 
    function checkURL(hash) 
    { 
     if(!hash) hash=window.location.hash; 
     if(hash != lasturl) 
     { 
      lasturl=hash; 
      if(hash=="") 
      $('#login_box').html(default_content); 
      else 
      loadPage(hash); 
     } 
    } 


function loadPage(url) 
{ 
    url=url.replace('#page',''); 

    $.ajax({ 
     type: "POST", 
     url: "include/help4meApi.php", 
     data: 'page='+url+'&tag=navigation', 
     dataType: "html", 
     success: function(msg){ 

      if(parseInt(msg)!=0) 
      { 
       $('#login_box').html(msg); 
      } 
     } 

    }); 

} 

Проблема заключается в том, когда я вернулся к основным скриптов сайта не работает.

+0

Не могли бы вы уточнить, что.? вы имеете в виду, что _it не работает_? Любые ошибки в консоли браузера? – melancia

+0

@trucik отредактируйте этот вопрос и добавьте свою демонстрационную версию HTML – Aminul

+0

@Aminul http://help4me.pl/login.php нажмите на нижний колонтитул «Kontakt», нажмите backspace я нажимаю на «Zarejestruj», и ничего не происходит, когда вы обновляете страницу и нажимаете «Zarejestruj» еще раз, она работает – kchrusciel

ответ

0

вопрос приходит отсюда $('#login_box').html(default_content);. Когда вы укажете .html(), событие, связанное внутри элемента, будет очищено.

Когда вы забой, вернуться на главную страницу, обработчик события уже не существует, так что вы должны зарегистрировать его снова

//For show and hide register values 
$("#registerInputsBtn").click(function(){ 
    $(".register_information").hide(1000); 
    $(".register_values").show(1000); 
    $("#firstname").focus(); 
}); 

регистр снова на кусок кода, который вы назначаете содержание в #login_box , Например, быстрое решение:

if(hash==""){ 
     $('#login_box').html(default_content); 
     $("#registerInputsBtn").click(function(){ 
      $(".register_information").hide(1000); 
      $(".register_values").show(1000); 
      $("#firstname").focus(); 
     }); 
    } 

но здесь коды не DRY :(изменить поток, как загрузка страницы и зарегистрировать событие в правильном потоке рекомендуется

+0

Я не понимаю, как это сделать? – kchrusciel

+0

добавил пример в редактирование – ChinKang