如何从标记<a>&#39;s action-data?</a>获取信息

时间:2012-02-21 12:10:13

标签: javascript flask

我想在href的“action-data”中加入一些信息,例如:

 <a href=# action-data="userid={{g.user._id}}&amp;messageid={{message._id}}" id=reply >reply</a>

但是如何获得用户ID和messageid回到Javascript代码?

<script type=text/javascript>
$(function () {
    $('a#reply').bind('click', function () {
        $.getJSON($SCRIPT_ROOT + '/_get_replies', {
            messageid: ??????How to get messageid from href action-data?
            userid: ??????How to get userid from href action-data?
        }, function (data) {
        $('#replies').text(data.result)
        });
        return false;
    });
});

3 个答案:

答案 0 :(得分:3)

以不同方式存储:

<a href="#"data-userid="{{g.user._id}}" data-messageid="{{message._id}}" id="reply">reply</a>

jQuery可以这样得到它:

 var messageId = $('#reply').data('messageid');

此外,点击事件可以更短:

$('a#reply').click(function(){

});

ps:记得使用引号,就像你在hrefid

中没有的那样

答案 1 :(得分:1)

如果您控制标记,则应使用data-作为前缀,而不是使用-data作为后缀。此外,为每个属性设置一个属性似乎更容易,而不是解析,所以为什么不:

<a href=# data-userid="{{g.user._id}}" data-messageid="{{ message._id }}" id=reply>

然后你可以使用jQuery data

var userid = $("a#reply").data("userid"),
    messageid = $("a#reply").data("messageid");

答案 2 :(得分:0)

我还推荐其他回答者关于使用不同标记的建议。但是,如果您无法更改标记,则可以解析如下参数:

...
$('a#reply').click(function() {
    // parse the 'action-data' attribute of the link
    var actionData = $(this).attr('action-data');
    var params = {};
    $.each(actionData.split("&"), function(index, data) {
        var keyValue = data.split("=");
        params[keyValue[0]] = keyValue[1];
    });

    // now you can use params.userid and params.messageid
    ...