在jQuery中获取锚标记值

时间:2014-03-07 12:32:10

标签: javascript php jquery anchor

我有一个像这样的html标签。

<a class="employee_details" target="_blank" href="index1.php?name=user1&id=123">User</a>

我需要在jquery中获取两个参数值

<script type="text/javascript">
    $(function () {
        $('.employee_details').click(function () {
            var status_id = $(this).attr('href').split('name');
            alert(status_id[0]);
        });
    });
</script>

在javascript中将两个参数中的参数值都获取的任何帮助。

我想使用jQuery

在两个变量中获取user1和123

由于 Kimz

6 个答案:

答案 0 :(得分:4)

尝试这个逻辑:

var href = $(this).attr('href');
var result = {};
var pars = href.split("?")[1].split("&");

for (var i = 0; i < pars.length; i++)
{
    var tmp = pars[i].split("=");
    result[tmp[0]] = tmp[1];
}

console.log(result);

因此,您将在result对象上获取参数作为属性,例如:

var name = result.name;
var id = result.id;

Fiddle

更新:

对于无法做到这一点的下选民,实施版本:

var getParams = function(href)
{
    var result = {};
    var pars = href.split("?")[1].split("&");

    for (var i = 0; i < pars.length; i++)
    {
        var tmp = pars[i].split("=");
        result[tmp[0]] = tmp[1];
    }

    return result;
};

$('.employee_details').on('click', function (e) {
    var params = getParams($(this).attr("href"));
    console.log(params);

    e.preventDefault();
    return false;
});

Fiddle

答案 1 :(得分:3)

$(function() {
    $('.employee_details').on("click",function(e) {
        e.preventDefault(); // prevents default action
        var status_id = $(this).attr('href');
        var reg = /name=(\w+).id=(\w+)/g;
        console.log(reg.exec(status_id)); // returns ["name=user1&id=123", "user1", "123"]
    });
});

// [0] returns `name=user1&id=123`
// [1] returns `user1`
// [2] returns `123`

JSFiddle

注意:最好使用ON方法,而不是点击

答案 2 :(得分:1)

不是最常见的跨浏览器解决方案,但可能是最短的解决方案之一:

$('.employee_details').click(function() {
    var params = this.href.split('?').pop().split(/\?|&/).reduce(function(prev, curr) {
        var p = curr.split('=');
        prev[p[0]] = p[1];
        return prev;
    }, {});

    console.log(params);
});

输出:

Object {name: "user1", id: "123"}

如果您需要IE7-8支持,此解决方案将无效,因为没有Array.reduce

答案 3 :(得分:0)

$(function () {
    $('.employee_details').click(function () {
        var query = $(this).attr('href').split('?')[1];
        var vars = query.split('&');
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split('=');
            var varName = decodeURIComponent(pair[0]);
            var varValue = decodeURIComponent(pair[1]);
            if (varName == "name") {
                alert("name = " + varValue);
            } else if (varName == "id") {
                alert("id = " + varValue);
            }
        }            
    });
});

答案 4 :(得分:0)

它不是很优雅,但它就在这里!

var results = new Array();
var ref_array = $(".employee_details").attr("href").split('?');
if(ref_array && ref_array.length > 1) {
    var query_array = ref_array[1].split('&');
    if(query_array && query_array.length > 0) {
        for(var i = 0;i < query_array.length; i++) {
            results.push(query_array[i].split('=')[1]);
        }
    }
}

results中有值。这适用于其他类型的网址查询。

答案 5 :(得分:0)

这很简单

// function to parse url string
function getParam(url) {
    var vars = [],hash;
    var hashes = url.slice(url.indexOf('?') + 1).split('&');
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

// your code
$(function () {
    $('.employee_details').click(function (e) {
        e.preventDefault();
        var qs = getParam($(this).attr('href'));
        alert(qs["name"]);// user1
        var status_id = $(this).attr('href').split('name');
    });
});