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 相关文章推荐
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
Angular2使用jQuery的方法教程
May 28 jQuery
jQuery动画_动力节点节点Java学院整理
Jul 04 jQuery
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
jQuery实现获取及设置CSS样式操作详解
Sep 05 jQuery
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
jquery实现广告上下滚动效果
Mar 04 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网上商城购物车设计代码分享
2012/02/15 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
Python命令启动Web服务器实例详解
2017/02/23 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
医大实习自我鉴定
2013/12/07 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
取保候审保证书
2014/04/30 职场文书
贷款承诺书范文
2014/05/19 职场文书
学校清明节活动总结
2014/07/04 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
关于长城的导游词
2015/01/30 职场文书
工程服务质量承诺书
2015/04/29 职场文书
2015年除四害工作总结
2015/07/23 职场文书
公司与个人合作协议书
2016/03/19 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python