Зачем расширять 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 .