使用jquery获取href属性值

时间:2014-11-18 23:41:23

标签: jquery

我的链接可能如下:

<a href="/some/where?id=123">click</a>

点击链接后,我的处理程序被触发:

$(document).on("click", "a", function (e) {
   e.preventDefault();

   var hrefAttribute = $(this).attr("href"); // "/some/where?id=123"

   console.log(hrefAttribute);
});

hrefAttribute包含“/ some / where?id = 123”。

我想要的是提取名为id的参数的值。因此值“123”

随着时间的推移,可能会向url添加更多属性,我宁愿不通过字符串操作提取参数值。如果可能的话,参数名称的JQuery选择值会更好。

3 个答案:

答案 0 :(得分:1)

如果没有123属性的字符串操作,则无法获取href。但是,您可以设计该字符串操作,以便即使将其他查询参数添加到href,它仍然可以工作。

例如,您可以使用通用函数从URL中提取查询参数,如下所示:

// returns the query argument for the given key or undefined if the key is not found
function getParam(url, key) {
    var regex = new RegExp("\\?.*?" + key + "=" + "(.*?)(&|$)");
    var matches = url.match(regex);
    if (matches) {
        return matches[1];
    }
}

var id = getParam(this.href, "id");

工作演示:http://jsfiddle.net/jfriend00/3uxwe2ce/

答案 1 :(得分:1)

您可以使用正则表达式提取id,如下所示:

var hrefAttribute = $(this).attr("href"),
    id = hrefAttribute.replace(/^*id=(\d+)\b.*$/g,'$1');

console.log( id );

$(document).on("click", "a", function (e) {
   e.preventDefault();

   var hrefAttribute = $(this).attr("href"),
       id = hrefAttribute.replace(/^.*id=(\d+)\b.*$/g,'$1');

   console.log(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="/some/where?jsd=5567&id=123">click</a>
When the link is clicked, my handler is triggered:

另一种方法是使用.forEach()数组方法:

function getQParam(url, param) {
    var oParam = {};
    url.indexOf('?') === 0 || url.split('?')[1].split('&').forEach(function(v) {
        oParam[ v.split('=')[0] ] = v.split('=')[1];
    });
    return oParam[ param ];
}

var id = getQParam( this.href, 'id' );

function getQParam(url, param) {
        var oParam = {};
        url.indexOf('?') === 0 || url.split('?')[1].split('&').forEach(function(v) {
            oParam[ v.split('=')[0] ] = v.split('=')[1];
        });
        return oParam[ param ];
    }
$(document).on("click", "a", function (e) {
       e.preventDefault();
    var id = getQParam( this.href, 'id' );
  console.log( id );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <a href="/some/where?id=123">click</a>
    When the link is clicked, my handler is triggered:

答案 2 :(得分:0)

根据jQuery API documentation

$(this).attr("href", "/some/where?id=123");

如果要放置动态网址,则必须使用$ .ajax()