使用jquery加载外部页面

时间:2012-09-21 07:11:55

标签: javascript ajax jquery

我正在尝试使用jQuery将外部页面加载到当前页面而不会让用户看到页面加载。

当我调用页面'info.php'时,它被加载到#content div中。这就是剧本应该做的事情。问题是在包含脚本和#content div的主页面中,我已经有了一些代码,当有人访问页面而不是从任何外部页面调用时,我希望它能够被执行。这是有效的,但当我点击菜单中的一个链接时,我无法返回到初始内容。

以下是我的代码:

<script>
$(function() {
   $('#nav a').click(function() {
    var page = $(this).attr('href');
    $('#content').load(page + '.php');
    return false;
    });
});
</script>

<ul id="nav">
<li><a href="#">Page1</a></li>
<li><a href="about">About</a></li>
<li><a href="contact">Contact</a></li>
<li><a href="info">Info</a></li>
</ul>

<div id="content">
Here I have some code that I wanted to be attributed to the "Page1"
</div>

2 个答案:

答案 0 :(得分:0)

我对load()不太熟悉,但在这种情况下,我认为你应该使用ajax加载页面而不刷新。

var page = $(this).attr('href');
$.ajax({
  url: page + '.php',
  success: function(data)
  {
     $('#content').html(data);
  }
})
编辑:你说“当我点击菜单中的一个链接时,我无法回到初始内容”,你的意思是说你在div中有一些代码#content并且onclick你已经覆盖了它的内容?

答案 1 :(得分:0)

以下是示例:

$(function()
{
   var content = $('#content');

   $('#nav a').click(function(e) {
       e.preventDefault();
       var page = $(this).attr('href');

       content.children().hide();
       var pageContent = content.find("#" + page);
       if(pageContent.length > 0)
       {
           pageContent.show();
       }
       else // put ajax here
       {
           content.append($('<div>').attr('id', page).text('New page ' + page));
       }
   });
});

演示:jsfiddle.net/3jLjw/