O que você realmente deseja é o plugin jQuery URL Parser . Com este plug-in, obter o valor de um parâmetro de URL específico (para o URL atual) se parece com o seguinte:
$.url().param('foo');
Se você deseja um objeto com nomes de parâmetros como chaves e valores de parâmetros como valores, basta chamar param()
sem um argumento, como este:
$.url().param();
Essa biblioteca também funciona com outros URLs, não apenas o atual:
$.url('http://allmarkedup.com?sky=blue&grass=green').param();
$('#myElement').url().param(); // works with elements that have 'src', 'href' or 'action' attributes
Como essa é uma biblioteca de análise de URL inteira, você também pode obter outras informações a partir da URL, como a porta especificada ou o caminho, protocolo etc:
var url = $.url('http://allmarkedup.com/folder/dir/index.html?item=value');
url.attr('protocol'); // returns 'http'
url.attr('path'); // returns '/folder/dir/index.html'
Também possui outros recursos, confira a página inicial para mais documentos e exemplos.
Em vez de escrever seu próprio analisador de URIs para esse fim específico, que meio que funciona na maioria dos casos, use um analisador de URIs real. Dependendo da resposta, o código de outras respostas pode retornar em 'null'
vez de null
, não funciona com parâmetros vazios ( ?foo=&bar=x
), não pode analisar e retornar todos os parâmetros de uma só vez, repete o trabalho se você consultar repetidamente parâmetros de URL, etc.
Use um analisador de URI real, não invente o seu.
Para aqueles que são avessos ao jQuery, há uma versão do plugin que é JS puro .