简体   繁体   English

在jQuery中获取锚标记值

[英]Get anchor tag values in jQuery

I have a html tag like this. 我有一个这样的html标签。

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

I need to get the two parameter values in jquery 我需要在jQuery中获取两个参数值

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

Any help in getting both the parameter values in two variables in javascript. 在javascript中获取两个变量中的两个参数值的任何帮助。

I want to get user1 and 123 in two variables using jQuery 我想使用jQuery在两个变量中获取user1和123

Thanks Kimz 谢谢金兹

Try this logic: 尝试以下逻辑:

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);

So you'll get the parameters as properties on result object, like: 因此,您将获得参数作为result对象的属性,例如:

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

Fiddle . 小提琴

UPDATE: 更新:

For the down-voter who could not undertand this, an implemented version: 对于无法理解这一点的投票者,请使用以下已实现的版本:

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 . 小提琴

$(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 JSFiddle

NOTE: Better to use ON method instead of click 注意:最好使用ON方法而不是单击

Not the most cross browser solution, but probably one of the shortest: 不是最跨浏览器的解决方案,但可能是最短的解决方案之一:

$('.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);
});

Output: 输出:

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

If you need IE7-8 support this solution will not work, as there is not Array.reduce . 如果您需要IE7-8支持,则此解决方案将不起作用,因为这里没有Array.reduce

$(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);
            }
        }            
    });
});

It's not very elegant, but here it is! 它不是很优雅,但是在这里!

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]);
        }
    }
}

In results has the values. results具有值。 This should work for other kinds of url querys. 这应该适用于其他类型的url查询。

It's so simple 很简单

// 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');
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM