2014-05-17 52 views
0

我想创建一个导航系统,其中有一组链接,点击时会将外部页面加载到div中。这是我到目前为止,但它不工作:如何通过将页面加载到div来创建动态导航系统?

<div class="row"> 
    <a href="link1" class="loadPage"><div class="col-md-4"><div class="navActive">Link1</div></div></a> 
    <a href="link2" class="loadPage"><div class="col-md-4"><div class="">Link2</div></div></a> 
    <a href="link3" class="loadPage"><div class="col-md-4"><div class="">Link3</div></div></a> 
</div> 

$(document).ready(function() { 
    $('.loadPage').click(function(e){ 
     e.preventDefault(); 
     var curActive = document.querySelectorAll(".navActive"); 
     for (i=0;i<curActive.length;i++) 
      curActive[i] = curActive[i].className.replace(/(?:^|\s)navActive(?!\S)/g , ''); 
     e.preventDefault(); 
     $('.targetLoad') 
      .hide() 
      .load(this.href), function() { 
       $(this).fadeIn(500); 
      }); 
     $(this + ' div div').addClass('navActive'); 
    }); 
}); 
+0

语法错误?打开开发工具(F12)。 '.load(this.href *)*,f'开头。 –

+0

我没有从代码中得到任何错误,它只是不起作用。 @ yury-tarabanko – Alex

+0

如果您将其复制正确,则存在错误。不同的括号'function(){$ this(this).fadeIn(500); }); \\ < - ?' –

回答

0

你的c中有几个错误ode:

  1. .load(this.href*)*, function() {...);应该是.load(this.href, function() {。你想指定一个完整的回调。不只是声明一个函数表达式,对吧?
  2. this div div那是什么?你需要$(this).find('div > div')

总结。

$(function() { 
    $('.loadPage').click(function(e){ 
     var activeCls = 'navActive'; 
     e.preventDefault(); 
     $('.' + activeCls).removeClass(activeCls); 
     $('.targetLoad') 
      .hide() 
      .load(this.href, function() {//there is no ')' after href 
       $(this).fadeIn(500); 
      }); 
     $(this).find('div > div').addClass(activeCls); 
    }); 
}); 

工作演示http://jsfiddle.net/tarabyte/F4EL9/。忽略其他代码来模拟服务器响应。

-2

考虑做这样的事情:

<a onclick="load_url('/my-page.html');">My page</a> 

然后jQuery的:

function load_url(url) 
{ 
    $("#target_div").load(url); 
} 
+1

内联处理程序。 2014年在那里。 –

+0

这会工作,但我同意@ yury-tarabanko。没有内联事件处理程序。 – Alex

+0

这是解决问题的简单方法,但我同意你的看法。 –

相关问题