为什么要扩展 jQuery?与仅拥有全局函数相比,扩展 jQuery 有什么好处?
function qs(key) {
key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&");
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/
此版本还使用了Array.forEach()
IE7 和 IE8 中原生不可用的 。它可以通过使用MDN 的实现来添加,或者你可以使用 jQuery 来$.each()
代替。