1

我想通过 jquery 从这个锚标记中读取查询字符串值。

<td><a href="#?acckey={{user.key()}}" class="generate_url">Get URL</a></td>

这是我写的,它不工作

$('.generate_url').each(function () {
    $(this).click(function () {
        alert(acckey)

    });

});

但这不起作用。有谁知道解决这个问题?

4

3 回答 3

2
$('.generate_url').on('click', function() {
    var m = this.href.match(/acckey=(.*)/),
    acckey = m ? m[1] : '';

    alert(acckey);
});

它将href值与正则表达式匹配并使用第一个内存组。如果未找到匹配项,acckey则将设置为空字符串。

更新

要获得整个匹配项(即“acckey=xxx”),您需要使用m[0]而不是m[1].

顺便说一句,我已经删除了,.each()因为您只是添加了一个点击处理程序。

于 2012-05-31T10:06:29.923 回答
2

基于这里的解析函数,我们可以做出通用的解决方案:

function getParameterByName(query_string, name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(query_string);
    if (results == null) return "";
    else return decodeURIComponent(results[1].replace(/\+/g, " "));
}

$(".generate_url").click(function() {
    var query_string = this.href.substring(this.href.indexOf("?"));
    var acckey = getParameterByName(query_string, "acckey");
    alert(acckey);
});​

演示:http: //jsfiddle.net/dQ8Z9/


要获取查询字符串,您可以简单地使用:

$(".generate_url").click(function() {
    var query_string = this.href.substring(this.href.indexOf("?") + 1);
    alert(query_string);
});​

演示:http: //jsfiddle.net/dQ8Z9/1/

于 2012-05-31T10:11:02.310 回答
1
$('.generate_url').each(function () {
    $(this).click(function () {
        alert($(this).attr('href').replace(/^.*?\?/, ""));  
        /* return: acckey={{user.key()}} */
    });
});

小提琴示例:http: //jsfiddle.net/f4vN7/

于 2012-05-31T10:06:20.017 回答