Зачем расширять 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/
Эта версия такжеиспользует Array.forEach()
, который изначально недоступен в IE7 и IE8.Его можно добавить, используя реализацию в MDN , или вместо него можно использовать $.each()
в jQuery.