Javascript jQuery如何从单击的链接获取查询参数的值
如果有这样的链接:Javascript jQuery如何从单击的链接获取查询参数的值,javascript,jquery,Javascript,Jquery,如果有这样的链接: <a href="/users/xxxx?width=640" class="dialogOnClick">Create Account</a> 当用户单击带有类dialogOnClick的链接时,我想检查是否存在宽度查询参数,如果存在,则获取该值。在上述情况下为640。这可能吗 谢谢 如果您只需要后面的数值,则可以使用: this.href.match(/\d+$/)[0]; this.href.match(/width=\d+/)[0].mat
<a href="/users/xxxx?width=640" class="dialogOnClick">Create Account</a>
当用户单击带有类dialogOnClick的链接时,我想检查是否存在宽度查询参数,如果存在,则获取该值。在上述情况下为640。这可能吗
谢谢
如果您只需要后面的数值,则可以使用:
this.href.match(/\d+$/)[0];
this.href.match(/width=\d+/)[0].match(/\d+$/)[0]
但是,如果您特别想要宽度值,可以使用:
this.href.match(/\d+$/)[0];
this.href.match(/width=\d+/)[0].match(/\d+$/)[0]
或者,如果希望使用更健壮的方法获取多个参数中的一个,则需要解析URL:
function getParams(url) {
var paramString = url.split('?')[1];
var paramArray = [];
var params = {};
var p;
if (paramString && paramString.length) {
paramArray = paramString.split('&');
for (var i=0, iLen=paramArray.length; i<iLen; i++) {
p = paramArray[i].split('=');
params[p[0]] = p[1];
}
}
return params;
}
POJS工作示例:
<a href="/users/xxxx?width=640" class="dialogOnClick"
onclick="alert(this.href.match(/\d+$/)[0]);return false;">Create Account</a>
<a href="/users/xxxx?width=640" class="dialogOnClick"
onclick="alert(getParams(this.href).width);return false;">Create Account 2</a>
元素的
搜索
属性将包含查询字符串
然后,您可以将其解析为键和值对,或者在这个简单的示例中使用正则表达式
$('.dialogOnClick').live('click', function() {
console.log( this.search.match(/width=(\d+)/)[1] );
});
但是,如果没有匹配项,则此操作将失败。您可能希望将
match()
的返回赋值给一个变量,并首先测试它是否有必需的元素。您可以使用jQuery获取href
的内容:
var href = $(this).attr('href');
以及一个正则表达式,用于解析该文本以确定是否存在宽度参数,并提取值:
var pattern = /width=([0-9]*)/g;
var match;
while (match = pattern.exec(href))
{
alert(match);
// Do something with the match (["width=640", "640"]) here...
}
这是一个。嘿,罗布,为什么两步匹配号码?我错过了什么?谢谢。@alex-没什么,我只是没有使用分组。:-)当然,当人们问这样的问题时,他们真的想要那个特定的值,还是更通用的解决方案?我不知道,只是填补时间…明白了+1表示深度解决方案。+1,更通用的正则表达式可能是:
/width=([^&]*)/
@RobG:谢谢。你也可以把在该字符类中编写>以完全支持规范:)
var pattern = /width=([0-9]*)/g;
var match;
while (match = pattern.exec(href))
{
alert(match);
// Do something with the match (["width=640", "640"]) here...
}