JQuery и JavaScript, если ... еще проблема - PullRequest
2 голосов
/ 14 марта 2011

Я пытался выяснить это в течение некоторого времени, но безуспешно.

Я использую простейшие jquery и ajax для загрузки контента на мою страницу, когда нажимаются ссылки на панели навигации или боковой панели.Я просто помещаю это в document.ready:

$("#nav ul li a").click(function(){content_load($(this).attr('href'));return false;}); 

Моя функция content_load такова:

function content_load(toLoad)
  {
  $('#content').hide('fast',loadContent);  
  function loadContent() 
    {  
    $('#content').load(toLoad,'',function(){showNewContent();tb_init('a.thickbox, area.thickbox, input.thickbox');});  
    }  
    function showNewContent()
      {  
      $('#content').show('fast');
      }  
   }

Это работает!

Но ... когда я ставлю простойОператор if ... else в function_load () вместо простой загрузки ajax переходит на страницу, которую я хотел загрузить с помощью функции load ().Это как «return false» игнорируется ...

Так вот, этот код «ломает» все:

function content_load(toLoad)
  {
  if(toLoad=="content/page1.html") {//do something}
  else
    { 
    $('#content').hide('fast',loadContent);  
    function loadContent() 
      {  
      $('#content').load(toLoad,'',function(){showNewContent();tb_init('a.thickbox, area.thickbox, input.thickbox');});  
      }  
      function showNewContent()
        {  
        $('#content').show('fast');
        }  
     }
   }

Любая идея, почему ???

Спасибо!Newman

Ответы [ 3 ]

2 голосов
/ 14 марта 2011

это то, что ваш комментарий в первой строке комментирует заключительную скобку вашего оператора if

2 голосов
/ 14 марта 2011

Может быть, это странная проблема.Поместите функции за пределы оператора if...else или, что еще лучше, используйте анонимные функции:

function content_load(toLoad) {
   if(toLoad=="content/page1.html") {
      //do something
   }
   else { 
      $('#content').hide('fast', function() {
         $(this).load(toLoad, function() {
             $(this).show('fast');
             tb_init('a.thickbox, area.thickbox, input.thickbox');
         });
      });
   }
}

То, что вы перенаправлены на страницу, означает, что ваша функция где-то ошибается.Если у вас есть код, в котором у вас есть //do something, вы должны также проверить его.

Консоль ошибок вашего браузера должна предоставить вам как минимум некоторую информацию.


Вместо return false вы также можете вызвать соответствующие методы объекта события:

$("#nav ul li a").click(function(event){
    // event.preventDefault();  <-- put here to always prevent reload, 
    //                              even on error (but should be avoided)
    content_load(this.href);
    event.preventDefault();
});
1 голос
/ 14 марта 2011

Не знаю, является ли это опечаткой, но закрывающие скобки закомментированы.

//do something}

Это приведет к его поломке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...