首页 技术 正文
技术 2022年11月8日
0 收藏 308 点赞 1,565 浏览 2050 个字

前面文章介绍了前端路由简单实现和Pjax入门方面的文章,今天来分享一个单页面应用神器jquery.pjax.js。

HTML

我们准备一个加载div#loading,默认隐藏,ajax请求的时候才显示。#container是用来加载响应的页面内容。.pagination是分页条组件。

<div class="row">
<div id="loading">Loading...</div>
<div id="container">jQuery.pjax分页</div>
<nav>
<ul class="pagination">
<li><a href="data.php?p=1" rel="external nofollow" >1</a></li>
<li><a href="data.php?p=2" rel="external nofollow" >2</a></li>
<li><a href="data.php?p=3" rel="external nofollow" >3</a></li>
<li><a href="data.php?p=4" rel="external nofollow" >4</a></li>
<li><a href="data.php?p=5" rel="external nofollow" >5</a></li>
</ul>
</nav>
</div>

Javascript

我们使用的pjax组件依赖jQuery库,所以先将这两个文件加载。

<script src="jquery-2.0.0.min.js"></script>
<script src="jquery.pjax.js"></script>

然后,使用以下代码调用pjax插件。

$(document).pjax('.pagination a', '#container');
$(document).on('pjax:send', function() {
$('#loading').show();
})
$(document).on('pjax:complete', function() {
$('#loading').hide();
})

上面的代码中,我们告诉pjax监听一个标签和使用 #container 作为目标容器:

$(document).pjax('.pagination a', '#container');
现在在pjax兼容浏览器,点击分页条上的页码,网页的内容容器 #container 中的内容将被 data.php?p=x 的内容替换。
data.php的内容我们简单的写个代码,实际开发中应该是读取数据库中的数据列表。
$p = intval($_GET['p']);
if($p==0) $p=1;
echo '这是第'.$p.'页';

选项与事件

pjax的调用方法我们刚才简单介绍了,它还可以设置一些选项用来定制。格式如下:

$(document).pjax(selector, [container], options)
selector 是一个字符串,比如要点击的文本 event delegation.
container 是一个字符串,选择唯一标识pjax容器。
options 下面所描述的一个对象。
参数 描述 默认值
timeout Ajax超时毫秒之后完全强制刷新 650
push 使用 pushState 在导航中添加浏览器历史记录 true
replace 更换网址不添加浏览器历史记录 false
maxCacheLength 大缓存大小为以前的容器内容 20
version 一个字符串或函数返回当前pjax版  
scrollTo 垂直位置以滚动导航。为了避免改变滚动位置,通过设置为 false. 0
type 网页请求的方式 “GET”
dataType 返回的数据类型 “html”
container CSS选择器的元素,其中的内容应及时更换  
url 字符串或函数返回的URL ajax请求 link.href
target 最终 relatedTarget 的值,通过 pjax events link
fragment CSS选择器的碎片从Ajax响应提取  

事件方法

事件 描述
pjax:click 阻止一个链接的默认事件,防止阻止pjax事件
pjax:beforeSend 参见 XHR headers
pjax:start 请求开始
pjax:send 发送请求
pjax:clicked pjax后,已经得到了从点击一个链接开始
pjax:beforeReplace 在内容被替换前,HTML从服务器加载的内容
pjax:success 在内容被替换后,HTML 内容从服务器加载
pjax:timeout 在选项 options.timeout;之后除非取消,否则将很难刷新
pjax:error 一个ajax错误,将执行原始的网页刷新,直到网页加载被取消
pjax:complete 总是在pjax执行完成以后调用,不论运行的结果
pjax:end 请求结束
pjax:popstate 浏览器前进后退事件 direction 属性:”back”/”forward”

$.pjax还能响应点击事件,以及提交表单和重新加载事件。详情请参考jquery.pjax项目地址:https://github.com/defunkt/jquery-pjax

/********/

查看更多内容 https://www.zhouyangla.com/?p=174

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,993
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,507
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,350
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,135
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,768
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,845