jQuery+ajax实现局部刷新的两种方法


Posted in jQuery onJune 08, 2017

在项目中,经常会用到ajax,比如实现局部刷新,比如需要前后端交互等,这里呢分享局部刷新的两种方法,主要用的是ajax里面的.load()。

第一种:

当某几个页面都有相同的头部、导航、底部的时候,点击导航链接可以在几个页面中切换,此时想要的效果是点击链接后只切换内容部分,其他不再重新加载。上代码。

jq-load.html:

<!DOCTYPE html>
<html>
 <head>
  <title>ajax局部刷新</title>
 </head>
 <body>
  <header>
   <nav>
    <a href="jq-load.html" rel="external nofollow" class="current">首页</a>
    <a href="jq-load2.html" rel="external nofollow" >新闻资讯</a>
    <a href="jq-load3.html" rel="external nofollow" >用户中心</a>
   </nav>
  </header>
  <section id="content">
   <div id="container">
     首页的内容
   </div>
  </section>
  <script src="js/jquery-1.11.0.min.js"></script>
  <script src="js/jq-load.js"></script>
 </body>
</html>

注:jq-load2.html、jq-load3.html与jq-load.html代码基本一致,只在#container的div里展示的内容不一样。

jq-load.js:

$('nav a').on('click', function(e) {         
 e.preventDefault(); // 阻止链接跳转
 var url = this.href; // 保存点击的地址

 $('nav a.current').removeClass('current');  
 $(this).addClass('current');           

 $('#container').remove();             
 $('#content').load(url + ' #container').fadeIn('slow'); // 加载新内容,url地址与该地址下的选择器之间要有空格,表示该url下的#container
});

注:此种方法用到了一些html5里面的新标记,在js中创建它们不再赘述。

第二种:

如果网页的左侧有一个列表,点击列表使右侧的内容进行切换,如果右侧的内容过多,不适合做选项卡,这时候用.load()局部刷新最好不过了。上代码。

user.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>个人中心</title>
    <meta charset="utf-8">
    <script src="js/jquery-1.11.0.min.js"></script>
    <script src="js/user.js"></script>
  </head>
  <body>
    <div class="userWrap">
      <ul class="userMenu">
        <li class="current" data-id="center">用户中心</li>
        <li data-id="account">账户信息</li>
        <li data-id="trade">交易记录</li>
        <li data-id="info">消息中心</li>
      </ul>
      <div id="content"></div>
    </div>
  </body>
</html>

user.js:

$(function(){
  $(".userMenu").on("click", "li", function(){
    var sId = $(this).data("id"); //获取data-id的值
    window.location.hash = sId; //设置锚点
    loadInner(sId);
  });
  function loadInner(sId){
    var sId = window.location.hash;
    var pathn, i;
    switch(sId){
      case "#center": pathn = "user_center.html"; i = 0; break;


 case "#account": pathn = "user_account.html"; i = 1; break;
      case "#trade": pathn = "user_trade.html"; i = 2; break;
      case "#info": pathn = "user_info.html"; i = 3; break;



 default: pathn = "user_center.html"; i = 0; break;
    }
    $("#content").load(pathn); //加载相对应的内容
    $(".userMenu li").eq(i).addClass("current").siblings().removeClass("current"); //当前列表高亮
  }
  var sId = window.location.hash;
  loadInner(sId);
});

user_center.html:

<div>
  用户中心
  ……
</div>

注:其他user_xxx.html的页面也是列表相对应的内容,此处不再赘述。

总结:

以上两种方法原理是一样的,通过.load()重新加载页面中的某一部分,需注意,ajax需要在服务器环境下运行。通过对比,可发现第一种比较简单,第二种稍复杂些,不过个人推荐第二种,第一种主要是举个例子,看.load()是怎么来用的,其实它在用户体验方面稍逊一筹,比如点击的时候地址栏里地址不变,使前进、后退失效,这个可以到后面再实现。而第二种的话运用比较灵活,巧妙的借助data-*的自定义属性来存储数据,点击的时候修改锚点,因为地址有变,所以刷新的时候仍然会保持当前的页面内容而不是切换到第一个。

以上所述是小编给大家介绍的jQuery+ajax实现局部刷新的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
详解jquery选择器的原理
Aug 01 jQuery
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
jquery实现楼层滚动效果
Jan 01 jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
jQuery实现购物车的总价计算和总价传值功能
Nov 28 jQuery
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
jquery自定义组件实例详解
Dec 31 jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 #jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 #jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 #jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 #jQuery
jquery仿京东商品放大浏览页面
Jun 06 #jQuery
jquery实现图片放大点击切换
Jun 06 #jQuery
jquery请求servlet实现ajax异步请求的示例
Jun 03 #jQuery
You might like
php的curl封装类用法实例
2014/11/07 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
浅谈Python基础之I/O模型
2017/05/11 Python
浅析python协程相关概念
2018/01/20 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
python实时监控logstash日志代码
2020/04/27 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
EJB的角色和三个对象
2015/12/31 面试题
优秀的教师个人的中文求职信
2013/09/21 职场文书
岗位职责范本
2013/11/23 职场文书
医师定期考核实施方案
2014/05/07 职场文书
绘画专业自荐信
2014/07/04 职场文书
教师见习报告范文
2014/11/03 职场文书
同乡会致辞
2015/07/30 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js