Навіщо розширювати 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()
, яка є недоступною в ІЕ7 та IE8. Його можна додати за допомогою реалізації в MDN , або ви можете використовувати $.each()
замість jQuery .