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を使用できます。