URL中的hash,也就是网址井号后面的部分,其实是一块宝地,它能创建浏览历史,也能存储一些简单数据。从Twitter开始Hash被用来定义Ajax内容,虽然如今已被HTML5的pushState所替代。这里介绍jQuery Hash 插件,可以帮助你完成简单数据的存储。

Hash存储数据有什么用

首先传统URL传递数据的弊端是,对搜索引擎不友好,搜索引擎会认为 /example和/example?key=val是不同的网址,然而hash则不同,搜索引擎认为 /example 和 /exmaple#;key=val 会是两个完全相同的网页。此外,用hash存储数据也不必刷新页面。

hash可以作为一种本地临时存储的解决方案,正如cookie那样。可以在url中保存临时的用户状态这是cookie做不了的。例如含有Ajax页面的刷新,就可以直接利用hash存储当前的状态。再例如你可以配合Hashchange监听来完成一些事情。

这算是一个尝试,虽然目前少有人在hash存数据上作文章,但是如果你真的需要,可以用这个插件参考一下。

看看什么样子的

下图即是一个实例,网址正常部分是example.com/demo,然后在网址hash中存了数据keyA=valA和keyB=valB;它们之间用分号“;”隔开,第一个key名前也有分号。

如果要用传统URL传递,则是example.com/demo?keyA=valA&keyB=valB的样子。

另外,如果URL本身带有一段hash,比如存在网页本身的锚点书签跳转,再储存数据时则可以是这样:

其中index并不是数据,前面带有分号的才是数据。很容易区分。

怎样使用jQuery Hash 插件

使用方法非常简单。分别有设置值、增加一对值,改变值、读取值,以及删除值。此外,此插件必须先引入jQuery,很好兼容大多的版本。

设置值

只需运行

$.hash( ~keyName, ~value );

即可设置一对值。例如,运行$.hash("color", "yellow");即可存储“color=yellow”到URL的hash里,使URL看起来像

example.htm#;color=yellow

增加值

想要增加一对值,同样运行设置值的脚本即可。例如再次运行$.hash("fontSize","20px;"),既可新存储这对值到hash里,使URL看起来像

example.htm#;color=yellow;fontSize=20px

改变值

同样运行设置值的脚本,第二个参数改为你想要新值即可,这个操作会把此对值移到hash末尾突显改变。

例如运行$.hash("color","green");即可改变hash里已存储的color的值,使得URL看起来像

example.com#;fontSize=20px;color=green

读取值

只需运行

$.hash( ~keyName )

即可读取名为~keyName的值,例如现在运行$.hash("fontSize");则会返回“20px”。

删除值

要删除已经存储的一对值,可以运行

$.hash( ~keyName, null )

来删除它。例如现在运行$.hash("color", null);既可删除hash中已存储的color=green数据,使得URL看起来像

example.htm#;fontSize=20px

jQuery Hash 插件 Demo

如果你还不理解或者想要看demo,按此。

获得jQuery hash 插件

要引入此插件非常简单,你可以到这里下载此js插件文件。

然后在至少引入jQuery后的某个位置加入

<script src="jQuery.hash.js" type="text/javascript"></script>

写在最后

插件下载链接在上面。在此要感谢Lewis,这个插件是基于他的jQuery hash plugin修改的。目前不支持中文开头的key名。首先我考虑了一下,hash后面如果出现的是?或者&这些正规的参数符号的话比较容易和hash井号前面的参数混淆,所以我选择了一个更美观的符号“;”分号,占用体积小几乎看不到,但是不影响使用;不会和前面出现问号和and符号混淆,而且这个也不需要两个符号,只需要分号而已。但如果你需要传统and符,你可以去原作者网站上下载,或者基于这个插件自行修改。

谢谢收看。

原文:http://blog.netsh.org/posts/jquery-hash-plugin_1455.netsh.html

更多参考:

1. http://benalman.com/code/projects/jquery-hashchange/docs/files/jquery-ba-hashchange-js.html

2. https://github.com/gcoguiec/jquery-hash

3. https://github.com/blixt/js-hash

justcode.ikeepstudying.com

jQuery hash 插件相关推荐

  1. html分页插件大全,前端jquery分页插件推荐

    很久没更新文章了,最近项目需要使用前端来做分页,于是找了一款现有的jquery分页插件进行修改了一下,增加了些新功能以及加大了兼容性,其本质其实就是使用$.ajax()方法进行包装,把修改过后的代码贴 ...

  2. jQuery.fly插件实现添加购物车抛物线效果

    样例 使用电商 APP 购买商品时,很多都有上图的红色小球抛物线效果,下面通过 jQuery.fly 插件来实现一个简单 Demo. 实现 简单思路: 确定抛物线的起始和终止位置: 通过 js 在起始 ...

  3. jquery倒计时插件可自定义多个倒计时间

    jquery倒计时插件设置多个自定义倒计时时间,任意设置天.小时.分钟.秒倒计时间功能. 查看演示>> <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  4. jQuery 表格插件汇总

    本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分页,对表格进行滚动,拖放操作等等.这 ...

  5. 超强的jquery极品插件--色彩选择器类/ 右键菜单类/ 图片新闻flash展示类

    Farbtastic Farbtastic是一个color picker插件.它能够在一个页面中加入多个颜色选择控件,然后每个控件关联到页面中的一个元素比如:文本输入框. Farbtastic jQu ...

  6. JQuery模板插件jquery.tmpl-动态ajax扩展

    在上一篇JQuery模板插件-jquery.tmpl中介绍了这款插件.有时我们需要去动态的ajax去加载模板,或者数据,根据url参数或者其他信息加载不同的模板,数据.在我的某个项目中有这个需求,所以 ...

  7. ajax异步后台存放购物车表,jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)...

    本文实例讲述了jQuery购物车插件jsorder用法.分享给大家供大家参考,具体如下: JSORDER 案例 案例一:我的菜单(点击菜名即可加入菜单) 红烧豆腐 12元 毛血旺 32元 套餐:京酱肉 ...

  8. java ajax jquery分页插件_JQueryPagination分页插件,ajax从struts请求数据

    2017-07-16 学完了struts2,做了个关于分页的小例子,用到了JQuery分页插件Pagination,先贴下插件下载地址 插件作者对于参数讲解的不够详细,琢磨了半天才明白怎么用,不多说, ...

  9. 超强1000个jquery极品插件!(连载中。。。。最近更新20090710)

    花N长时间积累的Jquery插件,希望大家喜欢.大家还有什么新的插件,请留言,我们一并收录. 感谢大家的支持. ++++++++++++++++++++++++++++++++++++++++++++ ...

最新文章

  1. 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程
  2. “千年虫”,计算机的巨大BUG!
  3. 深度学习之tensorflow (一) XORerr1 -修改
  4. JAVA中.jsp模板文件AJAX异步请求 - 数据渲染问题
  5. 【转】Python中的运算符
  6. Tomcat5.5链接Oracle、DB2、MySQL数据源实现JSP下拉框的填充
  7. 小米路由器刷 linux,小米路由器刷入Padavan系统
  8. 设计模式-行为型软件设计模式(二)
  9. 找不到java是什么意思_“无法找到或加载主类”是什么意思?
  10. 计算机删除网络位置,win10系统删除不用网络位置的处理技巧
  11. php-fpm master 关系,php-fpm master worker 关系介绍
  12. java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
  13. 有线以太网RJ45网口转无线WiFi,网卡转wifi,有线转无线,RJ45转wifi方案
  14. HTCVIVE无线套装安装后unityvr项目无法在头盔中显示
  15. 第1140期AI100_机器学习日报(2017-11-01)
  16. 2020-03-10
  17. 3dsmax建模总结
  18. 三运放差分放大电路分析_三运放组成的差分放大器电路图及特点
  19. Python日常小技巧(持续更新中)
  20. 教程 | 虚拟机VMware Workstation Pro安装教程

热门文章

  1. 鸣人的影分身(信息学奥赛一本通-T1303)
  2. 信息学奥赛C++语言:枪声问题
  3. 43 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活实际成本组件划分
  4. 3.1 SE11创建域
  5. python基础语法类型_Python基本语法[2]-简单数据类型,基础
  6. python numpy Quickstart tutorial之set_printoptions
  7. [Matlab] 符号积分求对流扩散方程在给定初始条件下的一维解
  8. AntDesignUI - V3.0 技术手册(资源篇)
  9. 搭建小程序表情包教程
  10. 【PHP源码】二维码生成api