jquery和javascript if ... else问题

时间:2011-03-14 10:51:56

标签: javascript jquery if-statement

我一直想把这个问题弄清楚一段时间,但没有运气。

当点击导航栏或侧边栏链接时,我使用最简单的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');
      }  
   }

这有效!

但是......当我在function_load()中添加简单的if ... else语句,而不是简单的ajax加载时,我会导航到我想用load()函数加载的页面。就像“返回假”被忽略了......

所以这就是“打破”一切的代码:

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');
        }  
     }
   }

知道为什么???

谢谢! 纽曼

3 个答案:

答案 0 :(得分:2)

是你的评论在第一行评论if语句的结束括号

答案 1 :(得分:2)

也许这是一个奇怪的范围问题。将函数放在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();
});

答案 2 :(得分:1)

不知道这是否是一个错字,但是结束括号被注释掉了。

//do something}

这会导致它破裂