我想通过 jquery 从这个锚标记中读取查询字符串值。
<td><a href="#?acckey={{user.key()}}" class="generate_url">Get URL</a></td>
这是我写的,它不工作
$('.generate_url').each(function () {
$(this).click(function () {
alert(acckey)
});
});
但这不起作用。有谁知道解决这个问题?
我想通过 jquery 从这个锚标记中读取查询字符串值。
<td><a href="#?acckey={{user.key()}}" class="generate_url">Get URL</a></td>
这是我写的,它不工作
$('.generate_url').each(function () {
$(this).click(function () {
alert(acckey)
});
});
但这不起作用。有谁知道解决这个问题?
$('.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()因为您只是添加了一个点击处理程序。
基于这里的解析函数,我们可以做出通用的解决方案:
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/
$('.generate_url').each(function () {
$(this).click(function () {
alert($(this).attr('href').replace(/^.*?\?/, ""));
/* return: acckey={{user.key()}} */
});
});
小提琴示例:http: //jsfiddle.net/f4vN7/