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...
}