为什么要扩展 jQuery?扩展jQuery与仅具有全局函数有什么好处?
function qs(key) {
key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars
var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)"));
return match && decodeURIComponent(match[1].replace(/\+/g, " "));
}
http://jsfiddle.net/gilly3/sgxcL/
另一种方法是分析整个查询字符串并将值存储在对象中以供以后使用。这种方法不需要正则表达式并扩展对象(但是,可以很容易地使用全局变量):window.location
location.queryString = {};
location.search.substr(1).split("&").forEach(function (pair) {
if (pair === "") return;
var parts = pair.split("=");
location.queryString[parts[0]] = parts[1] &&
decodeURIComponent(parts[1].replace(/\+/g, " "));
});
http://jsfiddle.net/gilly3/YnCeu/
此版本还使用了 在 IE7 和 IE8 中本机不可用的 。它可以通过使用MDN的实现来添加,或者你可以使用jQuery的$.each()
来代替。Array.forEach()