当用户点击菜单项时,会向后台发送页码,后台根据页码来返回不同页面。同时使用了jquery.history插件,来解决ajax无法后退记录历史的问题。
来看构建过程
首先先建立如下菜单html结构
- <ul>
- <li><a href="#page1" rel="ajax">Home</a></li>
- <li><a href="#page2" rel="ajax">Portfolio</a></li>
- <li><a href="#page3" rel="ajax">About</a></li>
- <li><a href="#page4" rel="ajax">Contact</a></li>
- </ul>
- <div class="loading"></div>
- <div id="content">
- <!-- Ajax Content -->
- </div>
说明下:.loading为预加载动画容器,而#content为装返回的页面html的容器。
构建css样式
- .loading {
- background: url(images/load.gif) no-repeat;
- display:none;
- }
- #content {
- font-family:arial;
- font-size:11px;
- display:none;
- }
(实例包里面的css中有个错误,不是#loading 而是.loading,使用时请留意。)
来看Javascript代码
- $(document).ready(function () {
- //检查url是否包含页码信息
- $.history.init(pageload);
- //高亮显示选中的菜单
- $('a[href=' + document.location.hash + ']').addClass('selected');
- //给a绑定单击事件
- $('a[rel=ajax]').click(function () {
- //获取其href属性值
- var hash = this.href;
- //删除#标示符
- hash = hash.replace(/^.*#/, '');
- //读取该页码记录
- $.history.load(hash);
- //清理所有a的被选中的样式,给当前对象加被选中的样式
- $('a[rel=ajax]').removeClass('selected');
- $(this).addClass('selected');
- //隐藏内容层,显示预加载动画
- $('#content').hide();
- $('#loading').show();
- //运行ajax
- getPage();
- //取消a的默认动作
- return false;
- });
- });
- function pageload(hash) {
- //如果存在历史记录,读取相应页面
- if (hash) getPage();
- }
- function getPage() {
- //参数
- var data = 'page=' + encodeURIComponent(document.location.hash);
- $.ajax({
- url: "loader.php",
- type: "GET",
- data: data,
- cache: false,
- success: function (html) {
- //隐藏预加载动画
- $('#loading').hide();
- //加入内容
- $('#content').html(html);
- //显示内容层
- $('#content').fadeIn('slow');
- }
- });
- }
我已经换成中文注释,这里就不再解释。

我看过这个教程了,挺好的,现在就是把page写在不同的文件里,也就是从不同的页面去调取,应该怎么做