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一致するものが見つからなかった場合、は空の文字列に設定されます。

アップデート

m[0]完全一致(つまり「acckey = xxx」)を取得するには、の代わりにを使用する必要があります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 に答える