1. 帮助文档
  2. var url = location.search;
  3. > "?action=view&section=info&id=123&debug&testy[]=true&testy[]=false&testy[]"
  4. var section = $.query.get('section');
  5. > "info"
  6. var id = $.query.get('id');
  7. > 123
  8. var debug = $.query.get('debug');
  9. > true
  10. var arr = $.query.get('testy');
  11. > ["true", "false", true]
  12. var arrayElement = $.query.get('testy[1]');
  13. > "false"
  14. var newUrl = $.query.set("section", 5).set("action", "do").toString();
  15. > "?action=do&section=5&id=123"
  16. var newQuery = "" + $.query.set('type', 'string');
  17. > "?action=view&section=info&id=123&type=string"
  18. var oldQuery = $.query.toString();
  19. > "?action=view&section=info&id=123"
  20. var oldQuery2 = $.query;
  21. > ?action=view&section=info&id=123
  22. var newerQuery = $.query.SET('type', 'string');
  23. > ?action=view&section=info&id=123&type=string
  24. var notOldQuery = $.query.toString();
  25. > "?action=view&section=info&id=123&type=string"
  26. var oldQueryAgain = $.query.REMOVE("type");
  27. > ?action=view&section=info&id=123
  28. var emptyQuery = $.query.empty();
  29. > ""
  30. var stillTheSame = $.query.copy();
  31. > ?action=view&section=info&id=123
  32.  
  33. jquery.query.js
  34. /**
  35. * jQuery.query - Query String Modification and Creation for jQuery
  36. * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
  37. * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
  38. * Date: 2009/8/13
  39. *
  40. * @author Blair Mitchelmore
  41. * @version 2.1.7
  42. *
  43. **/
  44. new function(settings) {
  45. // Various Settings
  46. var $separator = settings.separator || '&';
  47. var $spaces = settings.spaces === false ? false : true;
  48. var $suffix = settings.suffix === false ? '' : '[]';
  49. var $prefix = settings.prefix === false ? false : true;
  50. var $hash = $prefix ? settings.hash === true ? "#" : "?" : "";
  51. var $numbers = settings.numbers === false ? false : true;
  52.  
  53. jQuery.query = new function() {
  54. var is = function(o, t) {
  55. return o != undefined && o !== null && (!!t ? o.constructor == t : true);
  56. };
  57. var parse = function(path) {
  58. var m, rx = /\[([^[]*)\]/g, match = /^([^[]+)(\[.*\])?$/.exec(path), base = match[1], tokens = [];
  59. while (m = rx.exec(match[2])) tokens.push(m[1]);
  60. return [base, tokens];
  61. };
  62. var set = function(target, tokens, value) {
  63. var o, token = tokens.shift();
  64. if (typeof target != 'object') target = null;
  65. if (token === "") {
  66. if (!target) target = [];
  67. if (is(target, Array)) {
  68. target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
  69. } else if (is(target, Object)) {
  70. var i = 0;
  71. while (target[i++] != null);
  72. target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);
  73. } else {
  74. target = [];
  75. target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
  76. }
  77. } else if (token && token.match(/^\s*[0-9]+\s*$/)) {
  78. var index = parseInt(token, 10);
  79. if (!target) target = [];
  80. target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
  81. } else if (token) {
  82. var index = token.replace(/^\s*|\s*$/g, "");
  83. if (!target) target = {};
  84. if (is(target, Array)) {
  85. var temp = {};
  86. for (var i = 0; i < target.length; ++i) {
  87. temp[i] = target[i];
  88. }
  89. target = temp;
  90. }
  91. target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
  92. } else {
  93. return value;
  94. }
  95. return target;
  96. };
  97.  
  98. var queryObject = function(a) {
  99. var self = this;
  100. self.keys = {};
  101.  
  102. if (a.queryObject) {
  103. jQuery.each(a.get(), function(key, val) {
  104. self.SET(key, val);
  105. });
  106. } else {
  107. jQuery.each(arguments, function() {
  108. var q = "" + this;
  109. q = q.replace(/^[?#]/,''); // remove any leading ? || #
  110. q = q.replace(/[;&]$/,''); // remove any trailing & || ;
  111. if ($spaces) q = q.replace(/[+]/g,' '); // replace +'s with spaces
  112.  
  113. jQuery.each(q.split(/[&;]/), function(){
  114. var key = decodeURIComponent(this.split('=')[0] || "");
  115. var val = decodeURIComponent(this.split('=')[1] || "");
  116.  
  117. if (!key) return;
  118.  
  119. if ($numbers) {
  120. if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex
  121. val = parseFloat(val);
  122. else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex
  123. val = parseInt(val, 10);
  124. }
  125.  
  126. val = (!val && val !== 0) ? true : val;
  127.  
  128. if (val !== false && val !== true && typeof val != 'number')
  129. val = val;
  130.  
  131. self.SET(key, val);
  132. });
  133. });
  134. }
  135. return self;
  136. };
  137.  
  138. queryObject.prototype = {
  139. queryObject: true,
  140. has: function(key, type) {
  141. var value = this.get(key);
  142. return is(value, type);
  143. },
  144. GET: function(key) {
  145. if (!is(key)) return this.keys;
  146. var parsed = parse(key), base = parsed[0], tokens = parsed[1];
  147. var target = this.keys[base];
  148. while (target != null && tokens.length != 0) {
  149. target = target[tokens.shift()];
  150. }
  151. return typeof target == 'number' ? target : target || "";
  152. },
  153. get: function(key) {
  154. var target = this.GET(key);
  155. if (is(target, Object))
  156. return jQuery.extend(true, {}, target);
  157. else if (is(target, Array))
  158. return target.slice(0);
  159. return target;
  160. },
  161. SET: function(key, val) {
  162. var value = !is(val) ? null : val;
  163. var parsed = parse(key), base = parsed[0], tokens = parsed[1];
  164. var target = this.keys[base];
  165. this.keys[base] = set(target, tokens.slice(0), value);
  166. return this;
  167. },
  168. set: function(key, val) {
  169. return this.copy().SET(key, val);
  170. },
  171. REMOVE: function(key) {
  172. return this.SET(key, null).COMPACT();
  173. },
  174. remove: function(key) {
  175. return this.copy().REMOVE(key);
  176. },
  177. EMPTY: function() {
  178. var self = this;
  179. jQuery.each(self.keys, function(key, value) {
  180. delete self.keys[key];
  181. });
  182. return self;
  183. },
  184. load: function(url) {
  185. var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1");
  186. var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");
  187. return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash);
  188. },
  189. empty: function() {
  190. return this.copy().EMPTY();
  191. },
  192. copy: function() {
  193. return new queryObject(this);
  194. },
  195. COMPACT: function() {
  196. function build(orig) {
  197. var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig;
  198. if (typeof orig == 'object') {
  199. function add(o, key, value) {
  200. if (is(o, Array))
  201. o.push(value);
  202. else
  203. o[key] = value;
  204. }
  205. jQuery.each(orig, function(key, value) {
  206. if (!is(value)) return true;
  207. add(obj, key, build(value));
  208. });
  209. }
  210. return obj;
  211. }
  212. this.keys = build(this.keys);
  213. return this;
  214. },
  215. compact: function() {
  216. return this.copy().COMPACT();
  217. },
  218. toString: function() {
  219. var i = 0, queryString = [], chunks = [], self = this;
  220. var encode = function(str) {
  221. str = str + "";
  222. if ($spaces) str = str.replace(/ /g, "+");
  223. return encodeURIComponent(str);
  224. };
  225. var addFields = function(arr, key, value) {
  226. if (!is(value) || value === false) return;
  227. var o = [encode(key)];
  228. if (value !== true) {
  229. o.push("=");
  230. o.push(encode(value));
  231. }
  232. arr.push(o.join(""));
  233. };
  234. var build = function(obj, base) {
  235. var newKey = function(key) {
  236. return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("");
  237. };
  238. jQuery.each(obj, function(key, value) {
  239. if (typeof value == 'object')
  240. build(value, newKey(key));
  241. else
  242. addFields(chunks, newKey(key), value);
  243. });
  244. };
  245.  
  246. build(this.keys);
  247.  
  248. if (chunks.length > 0) queryString.push($hash);
  249. queryString.push(chunks.join($separator));
  250.  
  251. return queryString.join("");
  252. }
  253. };
  254.  
  255. return new queryObject(location.search, location.hash);
  256. };
  257. }(jQuery.query || {}); // Pass in jQuery.query as settings object

  

jquery.query.js的更多相关文章

  1. jquery.query.js 插件(示例及简单应用)

    帮助文档 var url = location.search; > "?action=view&section=info&id=123&debug&te ...

  2. jquery.query.js 插件(示例及简单应用) —— html之间传值

    帮助文档 var url = location.search; > "?action=view&section=info&id=123&debug&te ...

  3. jquery.query.js 插件的用法

    转载自:http://www.cnblogs.com/dachie/archive/2010/09/16/1827840.html 代码如下: var url = location.search; & ...

  4. jquery.datatable.js与CI整合 异步加载(大数据量处理)

    http://blog.csdn.net/kingsix7/article/details/38928685 1.CI 控制器添加方法 $this->show_fields_array=arra ...

  5. jquery.pjax.js bug问题解决集锦

    jquery.pjax 是一个很好的局部刷新插件,但实际应用过程是还是会有很多小问题,部分问题解决如下: 1.pjax 局部加载时候,IE 存在缓存问题,很容易理解,pjax是通过jquery的aja ...

  6. 分页插件jquery.simplePagination.js使用

    利用ecshop后台,利用插件更改分页显示样式遇到的问题,由于是利用Ajax获取数据进行页面数据更新?所以出现了以下情况: 初始化页面前 : 分页更新后: 点击后出现了分页插件内容消失, 原因:分页一 ...

  7. (转)jquery.url.js 插件的使用

    jQuery插件之-jQuery URL Parser   jQuery插件Query URL Parser用于解析URLs字符串.通过它我们可以方便地获取协议.主机.端口.查询参数.文件名.路径等等 ...

  8. Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页

    本博客介绍基于Spring Data这款orm框架加上Jquery.pagination插件实现的分页功能. 介绍一下Spring Data框架 spring Data : Spring 的一个子项目 ...

  9. 使用Jquery.cookie.js操作cookie

    query.cookie.js是一个基于jquery的插件,点击下载! 创建一个会话cookie: $.cookie(‘cookieName’,'cookieValue’); 注:当没有指明cooki ...

随机推荐

  1. 哈希索引和Btree索引的比较

    索引是帮助mysql获取数据的数据结构.最常见的索引是Btree索引和Hash索引. 不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引:而Mermory默认的索引是 ...

  2. Language Guide (proto3) | proto3 语言指南(十五)生成类

    Generating Your Classes - 生成类 要生成Java.Python.C++.Go.Ruby.ObjuleC或C代码,需要使用.proto文件中定义的消息类型,还需要在.proto ...

  3. linux下安装 zookeeper-3.4.9并搭建集群环境

    本文主要记录作者在实践过程中实现在centos7环境下安装zookeeper并搭建集群的详细步骤,关于zookeeper本文将不做详细介绍,安装步骤详情如下: 前提准备:3台linux服务器(因为zo ...

  4. 设计模式c++(1)

    本来是想把之前的<head first设计模式>看了,不过因为这本书是java实现的,跟c++还是略有区别. 于是找了一下,发现了一个不错的blog,打算连书带blog一起参考着看了. b ...

  5. linux常用命令(shell脚本常用命令)(grep、cut、sort、uniq、seq、tr、basename、dirname)

    本章命令: 1 2 3 4 5 6 grep cut sort uniq seq tr 1.grep 作用:过滤文本内容 选项 描述 -E :--extended--regexp 模式是扩展正则表达式 ...

  6. 自定义 ocelot 中间件输出自定义错误信息

    自定义 ocelot 中间件输出自定义错误信息 Intro ocelot 中默认的 Response 中间件在出错的时候只会设置 StatusCode 没有具体的信息,想要展示自己定义的错误信息的时候 ...

  7. Topo check failed. Mapred tasks exceed 1000000000

    Problem Description: java.sql.SQLException: EXECUTION FAILED: Task MAPRED-SPARK error SparkException ...

  8. Hyperbase数据迁移

    原老集群有100台服务器,新增90台服务器和原来的服务器构成新Hyperbase集群最初考虑有两种方案distcp和snapshot,由于distcp进行数据迁移时不在HBase本身控制范围内,故选用 ...

  9. AtCoder Beginner Contest 183

    第二次ak,纪念一下. 比赛链接:https://atcoder.jp/contests/abc183/tasks A - ReLU 题解 模拟. 代码 #include <bits/stdc+ ...

  10. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)【ABCD】

    比赛链接:https://codeforces.com/contest/1445 A. Array Rearrangment 题意 给定两个大小均为 \(n\) 的升序数组 \(a\) 和 \(b\) ...