jQuery获取地址栏参数插件(模仿C#)

复制代码 代码如下:

  $.request = (function () {

  var apiMap = {};

  function request(queryStr) {

  var api = {};

  if (apiMap[queryStr]) {

  return apiMap[queryStr];

  }

  api.queryString = (function () {

  var urlParams = {};

  var e,

  d = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); },

  q = queryStr.substring(queryStr.indexOf('?') + 1),

  r = /([^&=]+)=?([^&]*)/g;

  while (e = r.exec(q))

  urlParams[d(e[1])] = d(e[2]);

  return urlParams;

  })();

  api.getUrl = function () {

  var url = queryStr.substring(0, queryStr.indexOf('?') + 1);

  for (var p in api.queryString) {

  url += p + '=' + api.queryString[p] + "&";

  }

  if (url.lastIndexOf('&') == url.length - 1) {

  return url.substring(0, url.lastIndexOf('&'));

  }

  return url;

  }

  apiMap[queryStr] = api;

  return api;

  }

  $.extend(request, request(window.location.href));

  return request;

  })();

  接下来简介绍一下插件的用法。

  我们可以通过 $.request.queryString["key"] 就能获取到地址栏上面key参数。

  大多数情况下我用这个插件来读取一些配置信息。

  我们有时候会在 html 标签中加入一些其他的非HTML属性来作为标志信息,比如我们有时候会写<a id="demo" href="javascript:;" config="?title=hello&auto=true&">Demo</a>

  这样子我们通过   

    var config = $.request($("#demo").attr("config")).queryString;

    var title = config.title;

  很方便就能读取a上面的配置信息,而且我们不需要给a 添加太多其他的非Html属性。